|
|
ret_sp macro dummy ; r8 j' d" a5 T+ |4 J$ E" Y- ~. @
local llll, lll
* e& F! e( r9 G even: Y! o y# _* {% ^! s* w
mov sp, offset cs:lll
0 G( V/ w2 k% ` jmp dummy
& F9 T* I/ O& L0 u6 Illl:
! K; V+ I9 F* O; ~( T, o dw offset cs:llll ; return address0 G+ Q, r) U* R
llll:
7 c7 ?# L$ G% z/ @endm6 L- S8 S" J3 m
/ Y3 P' _! v+ M5 E8 t; ~关于ret_sp这个宏我有一点没有搞明白
& d4 l. V/ v5 ?% ^- }假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?* ?0 I5 r8 A. R3 O( Y
为什么不能直接写成:4 u4 e3 j: V- F+ W7 |3 R
ret_sp macro dummy
5 ?" Y3 g- n6 ?0 u9 s( D$ D9 g local lll * t$ T) d7 b! c# z+ a
even' [7 Z& E2 Q( t: G0 }8 A; n
mov sp, offset cs:lll 3 h% a3 e) \0 K2 \
jmp dummy
) W" b8 l5 Z) alll:
: n2 @1 j$ u/ ?2 h, v j; jendm
# W% q/ ?4 l+ D9 \0 _# e
/ V, W) X X% k$ p请知道的指点一下,谢谢! |
|