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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
* [( b4 x2 B! J0 h- X        local        llll, lll               " P  ?' I) j3 M; N  R0 A. L
        even
% R0 e* D3 d5 v+ {3 e        mov        sp, offset cs:lll        
. v0 t9 L' s1 ~: Q        jmp        dummy& E, C5 m6 h- W0 [! B
lll:! w! m! u$ k; K' l* `: l6 z& m5 }
        dw        offset cs:llll                ; return address
1 w; H/ a# o8 b/ G: |llll:8 X4 X5 j. {5 n  V6 d. m
endm
9 N; t* |4 _: Z# n. M
+ P' C# Q8 w6 V% R* n' m, s关于ret_sp这个宏我有一点没有搞明白3 y; ^) V& v' r
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?5 x1 f  U+ [* G: @3 ]7 W
为什么不能直接写成:3 i% [0 W) l3 `$ X8 B
ret_sp        macro        dummy                          {3 c6 d' o' I$ _0 A$ {
        local        lll               
; E. H' f! p2 R+ C. |- q0 i" P1 v        even2 n% V3 t5 c4 K& B' v  W! G
        mov        sp, offset cs:lll        , e6 J9 c( M& Q+ Q- i; G# ~& B
        jmp        dummy
$ g  I9 D$ }: L2 Jlll:, u) A3 A( k4 r7 ?
endm7 e2 m  Z. d1 E' [6 w) W! I* m

4 G# d$ M$ @( i& Y+ e. }请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-29 05:49 , Processed in 0.081576 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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