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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
+ P$ ^) y0 l. D) N        local        llll, lll               
1 {& ^3 t( H; W  t" V6 [        even
# e1 v$ ]8 [1 e* h6 }$ `; r# P        mov        sp, offset cs:lll        
3 Q- V  [* Z( O+ Q" O: k        jmp        dummy
7 s3 Q0 f0 ]/ J8 v2 t9 `& klll:6 P5 b/ Z1 N. {
        dw        offset cs:llll                ; return address! ?0 I5 b' P; r
llll:* l4 }9 }$ v: ^
endm
9 X4 ^+ Z4 s" U3 V$ P0 u0 a& s) Z; R+ b& y$ H8 ^- n4 k6 p+ l
关于ret_sp这个宏我有一点没有搞明白+ A; ?8 }( Y0 }2 A3 c! P
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?7 i9 x  s; A$ L1 `! }6 f1 z
为什么不能直接写成:
  ~) r8 H+ c  z/ [& t2 Fret_sp        macro        dummy                        1 m3 ?* @! k2 F: }
        local        lll               
8 _8 F9 N3 V$ j: ?        even3 z, }, O! E1 K* v9 e' w. p
        mov        sp, offset cs:lll        ! @+ G  V, s2 q9 K; b7 G
        jmp        dummy0 S9 o, \$ i% X) p7 t7 B+ O
lll:. g5 E/ I& T( g6 H7 D
endm% N  j5 i5 B* V/ ]- ^: k2 Y

1 `) [0 n; C  K请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 08:07 , Processed in 0.042733 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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