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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        ; C7 `) h# V& L( J+ S+ L
        local        llll, lll               
# x* Q& e0 O* T$ X+ {        even( }7 K' g) o! l5 _& w4 Q
        mov        sp, offset cs:lll        
$ l$ ?4 l# O# ~( b; u! L        jmp        dummy
1 m# V& v) W' I- l8 }9 C/ \lll:
( G+ l% w, W1 _9 [        dw        offset cs:llll                ; return address' |+ y- q- C/ u  C% h9 }4 w
llll:) D4 ~! [) O& d4 S! n  d) D/ [
endm
# D, Y9 M) e2 K3 K( R8 k/ h0 b7 n# u% G* P$ f3 m7 N6 N( l
关于ret_sp这个宏我有一点没有搞明白1 {! c. }' Q0 G4 s7 X( d5 o
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?$ ]. a* K% n  `0 I2 L7 r' @0 e
为什么不能直接写成:* Q2 u. x3 T- o2 `  q0 C: ]
ret_sp        macro        dummy                        
. `7 i4 m- K5 E; [5 ]9 u        local        lll               
, B: b" \2 R1 I* B! \        even
/ n% c; v7 F7 S        mov        sp, offset cs:lll          S: O  M$ l% V, L( l
        jmp        dummy/ E7 T0 H1 f) N, ?4 r
lll:
6 N, V& }$ {; G, t* aendm7 L8 Q7 I" K! e. [' o

" \" s' M; r3 V+ C请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-1 05:38 , Processed in 0.143818 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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