找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 7693|回复: 1

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        ; b6 x) x2 o  s# O
        local        llll, lll               ) e; L: ?: l8 V, e  W
        even
( c( b/ s' p* \        mov        sp, offset cs:lll          T& l( p, }5 v7 `0 ^- }% o$ y
        jmp        dummy
0 A8 Y8 r* |6 Plll:. }/ x9 w$ {# `* ]
        dw        offset cs:llll                ; return address
8 R) o) a* e4 C3 ^3 n, I+ d* Lllll:
) O% v7 w, U0 ~" M2 |# X5 s8 c0 t* Fendm
. m! c9 G+ n4 x
6 R- d7 j' S. e+ @- @; c关于ret_sp这个宏我有一点没有搞明白& ^- l0 |/ |  \) A5 ^3 s: v* Q
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
+ O  z2 [& l. k  v为什么不能直接写成:
0 [1 A8 y, m/ k2 B" ]* s$ m" Y% Qret_sp        macro        dummy                        
) Q$ j  m' t  `0 H        local        lll               ' p: F0 f& Q  R4 P& s4 ^" x: j
        even
: v7 K& a5 @1 l7 p        mov        sp, offset cs:lll        
' c7 o2 E9 R( ^6 O- u        jmp        dummy
! A# u6 y5 o3 q- C% s- d$ slll:" V7 x  R2 c$ |4 S
endm
! K9 P  K* c( Y! T0 S0 w9 n- ?5 v8 x2 j) A- M3 q, P1 u7 s8 k, e9 v0 {
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-12-1 02:51 , Processed in 0.072862 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表