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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        # [" F. h# N1 d' q2 |
        local        llll, lll               4 X! O1 g4 o" a4 M: v& `
        even
1 d( g$ |$ G3 N% o        mov        sp, offset cs:lll        8 J# P! C% [1 S
        jmp        dummy" V" x5 _) s' p. U4 b
lll:
5 d! ]) u, q0 z5 Y, L        dw        offset cs:llll                ; return address, C- n1 t+ a7 |9 A- x% p
llll:4 K  U4 w4 K: G
endm. o$ p2 a1 D0 t

9 _; k' N; R! e- H关于ret_sp这个宏我有一点没有搞明白* m5 H- I4 \2 a% l. S1 [
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?: m; p8 O1 h  I8 N9 x
为什么不能直接写成:' q/ T+ v0 m; @% `; Z8 ?# r, z
ret_sp        macro        dummy                        
6 e2 M: O; i& N9 k        local        lll               1 D6 @% n! j, m) r7 }
        even1 a7 ~/ {# S" O8 Y# e9 n$ a
        mov        sp, offset cs:lll        5 I; a1 y+ ^8 ?7 B0 f
        jmp        dummy
: M3 _! g, k: [# k; r4 M/ `6 llll:, I5 P" r4 ?6 p( U" k" ^
endm
0 k1 o! w5 U% y# B3 }
' h! D7 v, A4 @/ U+ p9 F; ~% h请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 23:50 , Processed in 0.026592 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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