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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        + f! n9 X! e' _5 p' |% w
        local        llll, lll               
7 v' S' g- B  j3 s        even
; v9 h9 X. n; o2 o- W) a- G8 }% v        mov        sp, offset cs:lll        
# i- E! N% T6 s! |        jmp        dummy
" f1 ?' E# [; G* `; ~' m+ N% u# g4 d& I% \lll:  j8 a3 b; D) G+ X$ l
        dw        offset cs:llll                ; return address
1 }5 D8 y8 v5 M7 J/ D! D  N# [llll:1 f" Z/ m3 h) s" G8 r3 Y/ c
endm% S4 `# _* z: O2 r  T
3 V- Q% j6 i9 U3 ^' x
关于ret_sp这个宏我有一点没有搞明白, m. B9 C. \1 D5 F5 s$ Z: o- B
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?8 ?* Q# h% @, J2 N8 x
为什么不能直接写成:
( S; _- p% N5 `! [; B3 T1 Cret_sp        macro        dummy                        ) S3 y0 x9 q! N; \
        local        lll               * Z+ ~1 a, q  D2 L- j
        even" g2 ^2 Y% O  b3 U! T
        mov        sp, offset cs:lll        
7 k4 o: |$ S0 |: k$ l        jmp        dummy
9 P: N0 F/ g3 i& w/ L+ Illl:
$ i* W$ |, E+ dendm
1 e6 v3 `) H: r2 v1 c2 y5 T# R9 ?7 Z3 l, k( A% d. N4 e
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 23:47 , Processed in 0.034982 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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