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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
! o% V0 m1 K: g( |8 G1 o( w- M/ A        local        llll, lll               & q0 ?5 @% |2 e3 r
        even& U0 p5 W7 {9 ~2 B
        mov        sp, offset cs:lll        
1 c% P. {1 E; z        jmp        dummy5 u6 ?2 b1 L# r. B/ L
lll:
* ]' U( T1 k/ Z6 `& S: U( {  q        dw        offset cs:llll                ; return address1 F& s0 R/ p9 U0 W
llll:; C2 m1 b7 \: I2 ]5 M* G  ~
endm
8 w9 c5 w4 C: F$ m# |7 i3 f/ K/ C# S$ r
关于ret_sp这个宏我有一点没有搞明白* M( m3 d# ~, H/ a9 p) T2 S
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
* t: u/ ~. t! z* s9 E$ u% P为什么不能直接写成:
: e$ ]- Y  {/ G" F) v# k( mret_sp        macro        dummy                        0 `6 o: c  y" ^, ~5 B% C
        local        lll               
) y8 d# K# t- Z: U% R; z8 U        even
, M8 d0 {) N% T* t2 z- {5 z9 v# ^        mov        sp, offset cs:lll        ; Q" @8 e' O, {' {; h
        jmp        dummy
/ L+ K& K( c; V1 Vlll:
) W* ]$ y' |* I0 @$ s* {& ]9 J4 zendm( I7 t4 J7 B) s) ?; U$ N

0 l, r! S* @/ i; a) f+ V+ e请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-25 03:43 , Processed in 0.076740 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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