|
|
ret_sp macro dummy 8 u1 j8 i# E! v0 w' |( g$ a
local llll, lll
?" f# s4 F9 p0 s' M even' X# j3 @4 {, a7 w; `+ J! E
mov sp, offset cs:lll 7 _- u/ ?) P+ F! ~- p5 K
jmp dummy! Q8 d# ]8 a$ g7 y9 n* @
lll:
& o8 H: \7 W2 A. l0 P A4 F2 y$ h, d dw offset cs:llll ; return address; F% u$ T) Z2 M9 X/ Q6 }
llll:1 ~7 R# U, K; L( ^$ e3 x
endm
* S; M: V0 ?! R. Z n6 G
6 u4 i% _9 a4 Y4 k# ^关于ret_sp这个宏我有一点没有搞明白" H+ F2 L$ y* p* i$ u: K
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
8 T# G# g V; z' h为什么不能直接写成:$ |0 d' i- @" {5 y5 @1 w" w
ret_sp macro dummy 3 H! D5 H* x! Q$ c8 M& d( K
local lll
/ F Q1 W' x6 k% m even: U2 }+ R% x; _( d( ~# b
mov sp, offset cs:lll * ]" M; b, W( f" p) m
jmp dummy
- S% g. N3 f2 C4 }! Y! G, rlll:; u: b5 C. w, L, @: _
endm4 d9 Q1 R0 D0 [, P% K- h. r
9 x' a# @6 D. ?( G2 _, n3 ^
请知道的指点一下,谢谢! |
|