|
|
ret_sp macro dummy
! p# u$ [8 Q0 `' O& `2 ~7 D& U local llll, lll
( C' V/ G9 {# F) G even
5 ~3 B+ \' d+ H0 ~1 J( q7 z mov sp, offset cs:lll
8 |. S3 m6 c5 N6 `5 E3 V jmp dummy3 g* b$ H" r7 b, r1 X
lll:
: i) ?' \2 K- X$ b2 }/ n, x$ I dw offset cs:llll ; return address
! _, j l9 E& V: F% k1 Q6 {2 pllll:$ w4 y( Z( \! E* q0 B5 u; ]7 u E: b" p! y
endm [! |4 e0 b" [6 V: {4 [# d' e, V
$ u m- `; c, R6 \5 F
关于ret_sp这个宏我有一点没有搞明白
0 ^" e+ x+ i: h* H假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
4 U5 _7 a" @" P2 Q为什么不能直接写成:
" L ^$ f7 D/ ?% E, Kret_sp macro dummy # v0 [) g4 V6 u) M
local lll + y! d+ P7 {8 [( X1 l$ a" T, s5 ^) N H1 Q
even6 C. \5 g# Z8 p9 ]" Y% w* ]. N, C+ @
mov sp, offset cs:lll
& A8 b: {2 j0 K jmp dummy9 B& k9 M1 N# O& H
lll:- G0 B! O9 W! }# D: y% u
endm# Q8 l0 I3 \' x V
^1 y0 B! _( w! ~; q' s请知道的指点一下,谢谢! |
|