|
|
ret_sp macro dummy ; b6 x) x2 o s# O
local llll, lll ) e; L: ?: l8 V, e W
even
( c( b/ s' p* \ mov sp, offset cs:lll T& l( p, }5 v7 `0 ^- }% o$ y
jmp dummy
0 A8 Y8 r* |6 Plll:. }/ x9 w$ {# `* ]
dw offset cs:llll ; return address
8 R) o) a* e4 C3 ^3 n, I+ d* Lllll:
) O% v7 w, U0 ~" M2 |# X5 s8 c0 t* Fendm
. m! c9 G+ n4 x
6 R- d7 j' S. e+ @- @; c关于ret_sp这个宏我有一点没有搞明白& ^- l0 |/ | \) A5 ^3 s: v* Q
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
+ O z2 [& l. k v为什么不能直接写成:
0 [1 A8 y, m/ k2 B" ]* s$ m" Y% Qret_sp macro dummy
) Q$ j m' t `0 H local lll ' p: F0 f& Q R4 P& s4 ^" x: j
even
: v7 K& a5 @1 l7 p mov sp, offset cs:lll
' c7 o2 E9 R( ^6 O- u jmp dummy
! A# u6 y5 o3 q- C% s- d$ slll:" V7 x R2 c$ |4 S
endm
! K9 P K* c( Y! T0 S0 w9 n- ?5 v8 x2 j) A- M3 q, P1 u7 s8 k, e9 v0 {
请知道的指点一下,谢谢! |
|