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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        ! L9 P5 z/ {3 m& B
        local        llll, lll               " A! p- Y3 [" v
        even
  F& n3 w+ p8 g( E( ?0 F        mov        sp, offset cs:lll        
4 q/ n$ C, f5 V! @" s% K# k( ]        jmp        dummy( U& L% v% r( a& m& O/ u' ]
lll:1 G3 P" y* Y/ V7 u5 J; l
        dw        offset cs:llll                ; return address
. ?$ E# S" R. J( f- `4 N& L! nllll:; Z1 u- v- \0 q
endm  _) Z6 k0 A1 U2 @, H' R. V5 I
, L0 ]5 `$ i0 \  f% o: A# d: f
关于ret_sp这个宏我有一点没有搞明白+ V8 O( f+ C2 u, T  e7 i" k
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?6 m' j2 K- w% A" x& z* J. j
为什么不能直接写成:
# ?/ R7 x/ C0 x' O3 e6 aret_sp        macro        dummy                        
* w6 F. Z" R2 D% \7 L9 u$ O0 ~        local        lll               
# T- k7 ~- ]! U' \        even$ g4 C: V$ W3 @. A7 }
        mov        sp, offset cs:lll        # K( c' k" t  ~
        jmp        dummy
$ T2 Z. b# l- i" E7 B- R# {; n  S0 |lll:
9 Z1 H0 N0 ^/ ^, a( m, l/ S2 R. n8 Sendm$ C8 p5 w" u; X1 `  B4 @: K# k

" O: O) H6 E* X7 i请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-22 10:24 , Processed in 0.038125 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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