|
|
ret_sp macro dummy
7 V7 J+ X! J2 w" ]2 G* L local llll, lll 7 A1 K0 J) R, y8 y: Z5 L
even
9 ~) \! R1 `/ ?" W mov sp, offset cs:lll 4 t: J& l3 m9 Q$ l. h& s* J7 a
jmp dummy# a e$ |' g! \, P
lll:$ m. }9 c2 p+ t
dw offset cs:llll ; return address' B* ]! [5 o6 q2 m2 m! G" \' ?7 ~
llll:: n. Q( p; B2 x; _
endm8 O0 q) T& X+ a
- P$ C; \2 c% Y% G5 Y7 c
关于ret_sp这个宏我有一点没有搞明白2 g% U5 \9 H6 k4 u$ S% }( M, Z
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
* }- u% h- P! L1 ]. g为什么不能直接写成:
. g& @( N9 l' d0 U b8 x9 hret_sp macro dummy ' i. X4 Q( s. P0 h
local lll 4 Q# x1 U& E; [5 @8 S O: x
even, {* x7 Q2 i0 W3 H& z
mov sp, offset cs:lll . K' V) R- \0 M, a. N# R
jmp dummy$ Z+ y! ~) S: }8 m1 H. c9 h
lll:4 Y$ s* |! s5 z8 W( O2 C
endm
2 E6 c) s0 D4 `
0 p% e$ j% K: F, y) ]: t; h e" I请知道的指点一下,谢谢! |
|