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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        4 p+ V$ W+ R" O9 H, v* a
        local        llll, lll               & F$ U8 {: K+ e) ~" Q+ G- y1 y
        even8 H0 f/ l) h4 E- a, m) d- o
        mov        sp, offset cs:lll        
+ q: t6 p  Y: y5 ^/ q2 S/ {        jmp        dummy
( M) e0 W$ Z) M! zlll:% ~8 P+ z3 j. O- S( p
        dw        offset cs:llll                ; return address& A, b  m/ B, U2 a
llll:. U6 D( ]8 p" ^4 G: v# K
endm
/ G2 \+ R: a7 B& ]+ k) \$ B0 y  W  ]  _  Y9 B1 h
关于ret_sp这个宏我有一点没有搞明白
# ?% t) L, W% N6 b1 r+ C假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?: k% |2 B3 K" v3 S
为什么不能直接写成:
1 D( |, ?2 G* G1 d9 R1 fret_sp        macro        dummy                        
. Z$ b8 V/ ?' w  k! j, Y' c        local        lll               
3 Z' M* m0 k6 e$ ^3 Z1 {  D3 K        even
6 I9 k- Q6 D: r2 [+ \        mov        sp, offset cs:lll        
- d( i% u4 Z4 }; o8 w8 S7 o        jmp        dummy) P2 `# L$ I: i2 O; y; E
lll:
, S3 D, R$ B, Kendm
7 {- u6 W0 ]# A& P6 s
* U% E7 E( l3 M. ~3 h- s  P请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 14:04 , Processed in 0.069689 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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