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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        $ g3 \9 ~' O4 r1 T4 {
        local        llll, lll               
+ t2 P# h( O1 I2 G( w/ T$ H        even
: C( C. v/ l4 x! P' S6 R  d        mov        sp, offset cs:lll        0 c6 T# q3 _8 x! o; S6 N* ^
        jmp        dummy
7 D% K' z+ H; l) r; ulll:
6 Z  y8 `7 t% U        dw        offset cs:llll                ; return address0 c( y7 H; {! E; H! F
llll:4 R! ^  F$ x7 _# L8 K' Y" t- d. b
endm
8 X: K% ^3 L  s' t5 D( b) l, L; T$ i+ z6 s* W
关于ret_sp这个宏我有一点没有搞明白6 C) @+ p* c, N& Q+ Z" V, u
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
" O- h3 _2 o/ o/ {8 [; n1 Q4 g7 i为什么不能直接写成:& p) l! b" W/ Z6 Q* j: v7 Z
ret_sp        macro        dummy                        
3 z0 v, B8 b$ p% G5 }( K4 r        local        lll               . f; p7 O: I1 N7 L/ u( [) \, l5 d
        even
7 _8 l% a! E- Y* p" I2 e        mov        sp, offset cs:lll        
( t% C$ ^# ~/ h        jmp        dummy8 s1 X8 m5 @1 n) Q+ P* `2 O
lll:+ T  i: `/ N- x& R; _& ^
endm
/ m, a; D6 \: y
1 L/ f) ~, m& `# b请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 09:22 , Processed in 0.168250 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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