|
|
ret_sp macro dummy
: I( J3 _8 @; T2 O( w local llll, lll ' ]& p0 L" u; P2 C8 N
even, ]7 [# F' `8 X5 a2 b
mov sp, offset cs:lll , t+ ?) l7 f- Y& @. Y
jmp dummy5 R9 J6 p4 H' h& O3 f
lll:
. S" S9 H$ P; `, } dw offset cs:llll ; return address
# t4 D$ s7 d3 j4 b6 d6 T: Zllll:
; |* U% i7 ~; hendm$ e7 d: j& U( c8 B2 z
& K2 `+ ~6 P1 j& S4 D! `9 N关于ret_sp这个宏我有一点没有搞明白
5 k1 F* u- Y0 t7 {6 i假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?7 b6 k: }1 B" t! i
为什么不能直接写成:. t. \2 u9 [ f/ C6 W' V! K
ret_sp macro dummy
$ l4 ^; r* V9 T. } local lll & R% w8 U% ]# R0 N& Q+ i: F: ]
even5 v, V# E) T# @5 j; ~6 N
mov sp, offset cs:lll / w8 o3 T) ~8 }; G9 v3 o3 ]
jmp dummy
$ d s/ j+ y0 B. v2 @/ [lll:
5 n2 [& \% `$ O" E- Aendm3 }8 `& o- p5 n$ i7 v
9 j& H9 k3 @. e6 m6 H* T( O请知道的指点一下,谢谢! |
|