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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        1 e" K. U% }1 B& V) f
        local        llll, lll               
6 D- ]) _: E/ B* z" g; c        even
) }% T9 z* d' b2 S        mov        sp, offset cs:lll        + i. t- L# A4 I5 d  L- Q, ^: X
        jmp        dummy. x3 F5 j* F1 j1 W$ A. V$ G- A3 @
lll:. M' o% @  W8 T4 F$ Q# `6 r) f
        dw        offset cs:llll                ; return address
# ~6 U( y5 A" y) y$ g0 zllll:
1 f* O" n% Q% \2 l7 F  h8 c4 }endm. \6 z( D- t9 k# V
$ `# x$ R2 D1 H
关于ret_sp这个宏我有一点没有搞明白
' h& V) b% z9 s* q假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?: ]/ m7 K7 X# b/ z2 U/ z
为什么不能直接写成:: L3 X' \8 ^: @/ ]: D
ret_sp        macro        dummy                        
0 K, f7 U; G1 ^# z( m        local        lll               
# l4 }' [/ o9 M' j. _' `        even* H& h# p3 v4 @: G$ X' `$ G* K
        mov        sp, offset cs:lll        * m% z/ p' E- B9 {# U$ r( R
        jmp        dummy: @& \2 w5 p8 t7 ~+ l
lll:1 I# ^2 }) e. h: [0 N+ O: p) }8 a
endm
8 Y. V1 I; E0 k* C6 s$ m( D0 c, ]. t3 z! m* L4 \
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 03:42 , Processed in 0.037841 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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