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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
- o2 I! C4 Y( _1 _) I- o8 F' D- ?- f        local        llll, lll               
, s; d; L- e% h& C        even& A# D2 H  n' H7 _2 t
        mov        sp, offset cs:lll        
( N: S9 [4 y/ ?1 h% [% b        jmp        dummy
, s" D5 W5 C9 f# U2 B& ~6 s- ]& xlll:. y! ?" e5 x, b2 w7 ~# |. x8 D
        dw        offset cs:llll                ; return address' G- }& P3 ^. m2 N1 @3 b0 x0 I
llll:
8 a) ?# f. E# x: Wendm7 w9 l* w6 M4 y; A
! z5 F; n$ K, V$ u1 K
关于ret_sp这个宏我有一点没有搞明白* e* m) i* F$ q) O+ @" [8 ^1 ^
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
% h0 Q4 n) g/ e- h+ _* r为什么不能直接写成:
0 i  W4 n$ \! a( A1 A) S" u2 m+ Oret_sp        macro        dummy                        
1 M) R9 y& @) Z* v* W        local        lll               
0 _# G* _# M8 H7 S! ~6 i        even. \% ]& ]) ^4 g; r. ?0 S
        mov        sp, offset cs:lll        
7 O; ?5 U1 c- v: M$ P; F- Z4 t        jmp        dummy' n& `' p# s6 d/ s2 P& i5 c
lll:: M) {$ t! D3 M: u$ ~+ F) J
endm5 m* y0 r  p) I

# r* p( X* x0 l0 F请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 11:29 , Processed in 0.173471 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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