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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        - _' e" A" u# q- X# C1 R+ U
        local        llll, lll               
. t! s9 c3 n- R( u/ C9 M0 i% T3 S4 q$ H6 l        even4 `0 f. ~2 h2 N! S' X8 s( z
        mov        sp, offset cs:lll        
* A: y7 ^0 |: |1 z  N% m1 v( `' h        jmp        dummy. J5 S% g+ f( p
lll:3 D1 t3 h8 D% H( c4 W
        dw        offset cs:llll                ; return address
' n$ i6 l2 V- w) |# J6 r+ Y, a' Kllll:
: g# U! @* T& z7 z( Dendm
, _# s9 R& ^' o1 C$ G' u0 p1 @/ ~0 g, q( A' w7 z) E# t& E4 p) D8 d
关于ret_sp这个宏我有一点没有搞明白% C" C( w0 i% C2 ]: J4 C
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
( y" t3 N% K) p为什么不能直接写成:
6 \! ~, l- R7 Z+ G# K& ]: B) ?) dret_sp        macro        dummy                        
+ L( R+ O0 T1 A8 v0 S+ R        local        lll               
' f+ H7 G& U6 b7 x9 m) W        even
( }8 t4 n$ h, _$ n        mov        sp, offset cs:lll        ; ^: v3 ]4 j2 E5 c2 l6 W
        jmp        dummy
& K% c; S/ K3 p, Y& j4 B- k/ f" plll:
9 ^8 B* |6 S6 B9 R+ ~! aendm
0 |9 ^1 e6 N+ J' ]
- }0 k$ ~' j, P6 e+ y. @请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 10:38 , Processed in 0.029958 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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