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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        , w. D; n2 S, }' ]9 j, ^; c& u3 {
        local        llll, lll               2 i5 I# p6 k6 C
        even
" ]+ ]) s: @: x, L+ W        mov        sp, offset cs:lll        
3 A' u. w8 I  B# @! W, Y        jmp        dummy  n1 u8 c% Q- `
lll:
" {, B0 t: D) c. T' k: w7 @* T        dw        offset cs:llll                ; return address
3 ^. Z% L, h% S2 l7 [6 Allll:% c' Q0 ^3 l( U; K+ E% b4 Y
endm: G( }9 |. _0 }! F, ^' J. b( O
. e1 |+ L1 a" _1 S& f4 U$ |
关于ret_sp这个宏我有一点没有搞明白! C/ ^+ H" U6 E
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?$ T6 H$ C. c( t  v  X) l! B
为什么不能直接写成:
3 V" D3 C0 e- k, X  Sret_sp        macro        dummy                        & S# B* h. z, _, r4 [+ _- }
        local        lll               
/ B5 \9 l* J2 h3 u        even! \4 b7 v/ D  P; O" U- l% o1 Q
        mov        sp, offset cs:lll        
5 S% ^$ e, `5 g- }' T9 B( h. S        jmp        dummy" W" u8 A) O9 x5 P
lll:8 H, r$ X, [$ r
endm
* Z. k5 h9 d7 t0 w9 N( S6 s; T. ?- z' v$ ~- F$ i2 b5 r
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 14:47 , Processed in 0.140108 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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