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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        . _. A! ]' U6 t* |: B2 ~  r
        local        llll, lll               
3 H2 D9 p$ U, D! q  {# e5 A$ K        even& s6 i8 |. Y+ E+ Q
        mov        sp, offset cs:lll        
7 E7 u: T; x: ~* T" \        jmp        dummy# u' Q5 i3 p1 A3 s+ s* r
lll:
! C, q9 h7 Z' a' |: B        dw        offset cs:llll                ; return address3 B7 F- {& U4 F' Z# B/ u9 B% z+ ?
llll:7 N, O% f1 Q0 l
endm6 ~* o" R6 p- z- h

( b1 T0 I1 v8 n9 B7 ^关于ret_sp这个宏我有一点没有搞明白: x  w( |$ G) f1 E7 L0 j, a
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
- u' V# W  |  n7 [! ]: Q  N) [2 h$ l( [为什么不能直接写成:
/ u+ S$ P: V' b- `: E1 d5 rret_sp        macro        dummy                        , f3 S. d' e/ d
        local        lll               % D8 ?7 M) P3 `
        even
+ F% E  j) M  d( x" B% y" M        mov        sp, offset cs:lll        
7 z; _5 S% w; K' Q* ^5 i        jmp        dummy) H/ S& p# m1 j& }& X+ W' |! ]( C
lll:
. n8 M6 F1 Q9 s* o7 Pendm
: u+ ?0 V4 ~1 }! h! o5 g; f( N" j$ ~; {
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-5 00:08 , Processed in 0.021732 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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