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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        1 i6 S- _  D% q( U2 {
        local        llll, lll               ' Y6 \& u/ x5 S5 p% |
        even) y) ?; `/ |4 v2 m
        mov        sp, offset cs:lll        ! l1 {, E" O" N; D0 N$ }
        jmp        dummy
/ T  D! X2 L( ]! Plll:0 W4 P, F# y' F/ P8 l! @2 [7 j% `
        dw        offset cs:llll                ; return address7 V9 P* I6 M* l! m) Y
llll:  C3 o3 }" x7 }# V3 K4 E4 F5 r- f
endm6 ?* Z2 X$ i3 N/ \. C: r

& g% K. d, l1 g& Q+ @8 H+ \2 _关于ret_sp这个宏我有一点没有搞明白# U, e, D* S7 e
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?+ [% d$ z/ o  B! Z4 m# u
为什么不能直接写成:
8 G# `: x* y8 |" \ret_sp        macro        dummy                        
6 o8 m" `  v1 y% h0 Y+ Z3 G        local        lll               
3 I$ c: o  |- P" e& P8 I- K- X' M        even
2 O/ Q2 S9 i! o( ?. ?        mov        sp, offset cs:lll        
9 s3 x# W0 N4 {; h" K$ x2 ?2 P        jmp        dummy
' Q/ _* V2 w$ @, tlll:
9 E  X  ?. _; j( Bendm  N* j4 Q, ~8 y4 _+ ~

! \; k2 \: h' v+ j$ z请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 17:10 , Processed in 3.109101 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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