|
|
ret_sp macro dummy
4 X1 M8 ?( d2 l. e% k$ }. B local llll, lll
9 w" P/ m8 s; x% p even) `+ N" ^1 D6 d
mov sp, offset cs:lll
% H+ G8 ^6 V" l5 x7 W, ? jmp dummy
; ^5 K1 D# j, r p- Dlll:6 _! z$ C' c/ O( R
dw offset cs:llll ; return address O) a4 Y' |) K: ~8 a1 O* e4 O
llll:
/ n# p( ~' m1 Z4 {4 N6 f1 U+ Tendm
1 N) o; M& v, q: H
$ w# ~& q" R3 W$ T8 u关于ret_sp这个宏我有一点没有搞明白2 f9 o. v( u! C i( P
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?5 [, s) ~1 D6 N9 I+ F1 i
为什么不能直接写成:- U2 O/ h# e0 Y0 b5 S8 G
ret_sp macro dummy : R/ T9 _/ x- D! N/ A
local lll ( j# u, @5 x/ j2 o, Q
even" W7 I& a5 k' f; q
mov sp, offset cs:lll " P6 S3 o% [3 s1 K
jmp dummy! [; g5 R7 t6 W4 g3 J5 r
lll:- s4 [1 P D5 D. E# ?
endm
( Q2 K7 \' X, x2 T0 _- Y5 n/ y+ w; [
请知道的指点一下,谢谢! |
|