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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        . S$ \1 Y* r, U% x; V: x" q2 h
        local        llll, lll               6 V6 }' B/ v' [3 o5 r
        even
9 _- D% ?- F+ f9 E        mov        sp, offset cs:lll        : Z5 k- u& q- u9 B) T
        jmp        dummy
9 c' A* ?. c5 V; tlll:
+ [! j* S7 u" e- P# r" s& ]        dw        offset cs:llll                ; return address: @) C" z/ S6 |4 P. N
llll:& X$ D. l6 n4 p( z+ W
endm
2 I# e( U' r% O! B$ U; |: i% U1 ]3 s2 {. ?4 u4 _
关于ret_sp这个宏我有一点没有搞明白: c( X2 Y( T9 N- T
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
$ g" n  n9 Y/ \+ S7 i$ Z, d为什么不能直接写成:- i8 F5 U/ R) }+ |) z# q/ t( l) H
ret_sp        macro        dummy                        
6 A3 c! a. \) m- j1 u        local        lll               - z( G* V$ R, r! {8 z* g6 G
        even
# q" [- e* T7 C/ j. d0 q7 _        mov        sp, offset cs:lll        
* e) x. u; g2 R/ i$ G        jmp        dummy
2 k7 \- F8 g) N0 f- olll:) L9 E% ?9 W3 V3 T
endm* x2 l; f' S. h5 g. w& i/ f

: }; O* i$ H" t8 u9 @/ N& l+ z请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 10:36 , Processed in 0.322245 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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