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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
7 V7 J+ X! J2 w" ]2 G* L        local        llll, lll               7 A1 K0 J) R, y8 y: Z5 L
        even
9 ~) \! R1 `/ ?" W        mov        sp, offset cs:lll        4 t: J& l3 m9 Q$ l. h& s* J7 a
        jmp        dummy# a  e$ |' g! \, P
lll:$ m. }9 c2 p+ t
        dw        offset cs:llll                ; return address' B* ]! [5 o6 q2 m2 m! G" \' ?7 ~
llll:: n. Q( p; B2 x; _
endm8 O0 q) T& X+ a
- P$ C; \2 c% Y% G5 Y7 c
关于ret_sp这个宏我有一点没有搞明白2 g% U5 \9 H6 k4 u$ S% }( M, Z
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
* }- u% h- P! L1 ]. g为什么不能直接写成:
. g& @( N9 l' d0 U  b8 x9 hret_sp        macro        dummy                        ' i. X4 Q( s. P0 h
        local        lll               4 Q# x1 U& E; [5 @8 S  O: x
        even, {* x7 Q2 i0 W3 H& z
        mov        sp, offset cs:lll        . K' V) R- \0 M, a. N# R
        jmp        dummy$ Z+ y! ~) S: }8 m1 H. c9 h
lll:4 Y$ s* |! s5 z8 W( O2 C
endm
2 E6 c) s0 D4 `
0 p% e$ j% K: F, y) ]: t; h  e" I请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-4 16:19 , Processed in 0.052690 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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