|
|
ret_sp macro dummy
! a9 C+ O9 z4 a# P5 S) D local llll, lll
3 K9 B: G( z( w% c even, K1 t2 J8 x- S6 g9 j
mov sp, offset cs:lll + a2 \1 S# g# Z. r
jmp dummy7 _/ a# l0 _0 m, F9 M9 O
lll:
) N, \ ?' b3 b2 W dw offset cs:llll ; return address. ]/ p2 }$ G8 Y
llll:
/ B& ~8 e4 a4 t8 o% f ^endm3 n. w+ q" K- l' i* U: r( ]
( q; E# i6 L' K* B9 i0 Z" n: Q关于ret_sp这个宏我有一点没有搞明白
8 H- t3 H* |0 o; D2 @假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
# H* z( o3 M$ i! B: b为什么不能直接写成:
& j X( k, n$ v) E! Cret_sp macro dummy : B% G7 _$ O$ c1 v1 R0 [% S
local lll 3 R! j. m5 O! A' {* E& y8 a: a
even; Y0 e! W8 B! t. B
mov sp, offset cs:lll ( M" D8 }: g6 y* L. m
jmp dummy V! N: Y0 B1 z+ g. C4 U0 ~5 f. J( @
lll:5 {% b4 l0 ]: h, I/ @( t% ?
endm
8 r, ?2 C8 _5 n4 C- M
# o9 j6 y. J' S+ E* i x请知道的指点一下,谢谢! |
|