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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        1 ?6 c5 d% j& b0 F
        local        llll, lll               ) q6 t' C8 a1 X  U, ?" j$ e
        even
5 ~4 `* W6 \& l9 C0 u( L        mov        sp, offset cs:lll        ; E5 [8 I1 @9 z0 @/ Z! W5 S  |
        jmp        dummy( o( P$ [9 x; }( Q2 y$ d! k) U% I
lll:
/ @7 W* d) f0 K7 Z+ F# t        dw        offset cs:llll                ; return address+ z; y& B& s# w4 Y$ R
llll:
0 p7 _  x( r* F% i5 {% ~6 V7 oendm
- m; W( o+ M2 A8 b5 n* Q! M) l7 H0 F" h$ ~  o/ G
关于ret_sp这个宏我有一点没有搞明白* v5 k' H& G4 s% w3 _- z
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?4 @) Z3 U& Z, s1 J/ P
为什么不能直接写成:
% F* i& M  y9 J# m) L8 bret_sp        macro        dummy                        1 _* ^8 W# k" t! ]7 R! v7 R9 e
        local        lll               - S7 m" m5 V; s
        even; G4 D3 @  \8 f" T# e- w
        mov        sp, offset cs:lll        + D8 w7 C+ ]- ^% C5 i
        jmp        dummy5 \  D0 F6 _# Z8 N7 m4 Y0 v' E: C, }
lll:& R  F+ a' n, I  c+ a) Y
endm4 Z# Y8 F' L9 E6 u. ^' F5 |+ a0 Q4 A
' j* F2 B. t6 z9 T% z" x
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-20 05:44 , Processed in 0.038835 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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