|
|
ret_sp macro dummy
4 v: ^4 [- U/ ?7 ~( ? local llll, lll
% O1 S0 N" ~; a, g! u) n even
/ ^7 ]$ I' F9 k0 d mov sp, offset cs:lll
# U I) s5 u q& ] jmp dummy
5 s, c+ z$ S+ ~ T7 ~# dlll:
* d: D" I) l3 X5 S8 z dw offset cs:llll ; return address
: X. u _0 \! _5 e8 j' {: mllll:: z; c' z! B0 D# Q7 }1 f3 m! C
endm: E: m! d# w1 R$ C; q t, z
- }( [# E: B" G8 y
关于ret_sp这个宏我有一点没有搞明白
$ n' y* j6 X' @* }( M, Q假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
% \* l% F d2 G9 ~) ^为什么不能直接写成:
' j/ a! \. h' I0 Q* D! Aret_sp macro dummy
4 @; v' \* _. R4 q1 G$ ~ local lll
: E5 M6 Y1 b( \9 B% W' T even
" W. k+ w0 n6 ?- r+ W mov sp, offset cs:lll 5 K1 m- I- o; m. R' N
jmp dummy. u4 v5 H( u' E+ {9 ^; U
lll:$ ~8 D9 c4 f e4 c. u4 L
endm
! n$ n: b/ I8 z, h4 \5 g5 i6 N: J8 F# A) O( M
请知道的指点一下,谢谢! |
|