|
|
ret_sp macro dummy 1 ?6 c5 d% j& b0 F
local llll, lll ) q6 t' C8 a1 X U, ?" j$ e
even
5 ~4 `* W6 \& l9 C0 u( L mov sp, offset cs:lll ; E5 [8 I1 @9 z0 @/ Z! W5 S |
jmp dummy( o( P$ [9 x; }( Q2 y$ d! k) U% I
lll:
/ @7 W* d) f0 K7 Z+ F# t dw offset cs:llll ; return address+ z; y& B& s# w4 Y$ R
llll:
0 p7 _ x( r* F% i5 {% ~6 V7 oendm
- m; W( o+ M2 A8 b5 n* Q! M) l7 H0 F" h$ ~ o/ G
关于ret_sp这个宏我有一点没有搞明白* v5 k' H& G4 s% w3 _- z
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?4 @) Z3 U& Z, s1 J/ P
为什么不能直接写成:
% F* i& M y9 J# m) L8 bret_sp macro dummy 1 _* ^8 W# k" t! ]7 R! v7 R9 e
local lll - S7 m" m5 V; s
even; G4 D3 @ \8 f" T# e- w
mov sp, offset cs:lll + D8 w7 C+ ]- ^% C5 i
jmp dummy5 \ D0 F6 _# Z8 N7 m4 Y0 v' E: C, }
lll:& R F+ a' n, I c+ a) Y
endm4 Z# Y8 F' L9 E6 u. ^' F5 |+ a0 Q4 A
' j* F2 B. t6 z9 T% z" x
请知道的指点一下,谢谢! |
|