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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        $ {$ L# Z% S! F, _
        local        llll, lll               1 F1 |' @7 Q3 F: q% E
        even3 A- J% L' j; G* T# ?4 h2 ?9 @
        mov        sp, offset cs:lll        # d. B$ ?0 M3 [, g5 a7 P$ l( u* O
        jmp        dummy
! Y% l4 _- |+ `0 ~lll:) x3 J7 K! }/ V6 z, @4 r! g: W- T
        dw        offset cs:llll                ; return address  ]/ Z. I6 l7 A3 r+ @( \
llll:* y' M) D9 R; ^9 E" C6 f' {
endm; G- c0 X/ M& X: W4 B

. g5 R& H1 d  ?% _8 l& z% ?# _$ p关于ret_sp这个宏我有一点没有搞明白$ w; ~2 P5 T" J8 d; S
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?" _1 K# z8 @" \: w
为什么不能直接写成:1 }7 ^' G3 k- w* W5 W0 w0 N$ L
ret_sp        macro        dummy                        + ]; u. m- U  c- V
        local        lll               
0 ]; B+ T' o% z6 ^. q1 L        even
9 Y; n$ w5 }5 i8 f8 ~/ Z' g- H. w        mov        sp, offset cs:lll        8 I5 @) S) A9 y
        jmp        dummy4 o& ^" H  n% R& L
lll:
3 s# B) E' x. Aendm7 E" W3 R/ f1 R7 ?' }% N8 t' l  {

( @! \- M9 ]3 }( s. Q请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-29 04:14 , Processed in 0.287162 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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