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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        - B5 F; Z# A1 d1 }
        local        llll, lll               
. V" R) x7 ^) S9 t        even" D0 z+ b& U. L3 s2 h) P
        mov        sp, offset cs:lll        
7 G0 H" k6 ?. n3 |8 s( o        jmp        dummy! U; J; h1 ~) \. i  d8 G
lll:$ n# |, ?" _: r! n) T( w" o& `
        dw        offset cs:llll                ; return address, s) ]7 C5 n, i! f" @+ s
llll:
: G. d# U2 \5 n) qendm0 r4 x' \! [. f$ z) ~/ Q& ]
" Q- w! k4 {" C, ~) e+ X
关于ret_sp这个宏我有一点没有搞明白* y0 o6 e; X" ~( b, X* ^
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?5 v& o* y: y1 s" V
为什么不能直接写成:
4 |2 X6 V0 J+ M7 Y1 I1 Z2 kret_sp        macro        dummy                        
  f* d. g: N! ~/ {/ H4 r+ D        local        lll               
! K3 B4 R' L# X$ Z        even% S" D% W/ W4 G! S
        mov        sp, offset cs:lll        
, X; F, p6 Z3 Y        jmp        dummy8 J- x! \0 A$ _( b" ?
lll:
" a" l! w8 s  F( R6 C7 R' j  g/ P5 Cendm
. j. x  z# |; b+ j9 Y7 ~, D1 k1 A0 k& g# ^2 H8 L* B3 ~
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 05:04 , Processed in 0.024162 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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