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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
2 b! K& z& K- H8 [; i, s% ^/ f        local        llll, lll               
3 M4 f6 k9 C: r        even/ q4 m/ v# r4 {! h4 @, E6 F9 W, c
        mov        sp, offset cs:lll        5 O% p9 }, l4 L* Z" o0 ?" ^
        jmp        dummy
6 d% C  A: Y" ]# ylll:( k4 j7 w, j7 I: S- S
        dw        offset cs:llll                ; return address1 w% \, Y' _3 U
llll:
% x0 Z# Z0 v  @; mendm
" l& ]7 t1 C7 W4 K( P9 i: Q+ D+ X. F$ P8 p2 N; c% C" r
关于ret_sp这个宏我有一点没有搞明白4 {' y6 _' G6 i2 @0 t( j
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
" D  j, f& }( c* j9 y. ?( N为什么不能直接写成:
$ P3 _) q2 T2 g7 T' M8 i* `4 Jret_sp        macro        dummy                        , P5 K/ [1 {% {% z8 Y) j4 n
        local        lll               
, K- w( N) o& j0 b        even, L2 t( `5 k4 P1 u. {/ }! g6 E
        mov        sp, offset cs:lll        + D6 Z* Z; }8 {( Y
        jmp        dummy  s% o+ h/ a& u& g
lll:1 {' o& e1 M$ B9 |3 @% y; i" ~: Y& Q
endm
( F+ {2 O; u2 K3 {: M3 S% k+ Z8 |) Y  L( ^# t3 H" S4 Q
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 05:39 , Processed in 0.056927 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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