|
|
ret_sp macro dummy
8 y- @& e* D- R0 Q9 M local llll, lll + O W' _6 A! y" m& d5 e `
even8 s. T5 x# K+ H4 t; N7 n6 r( t( g
mov sp, offset cs:lll
5 Q9 w' h& F( j7 g jmp dummy
: y6 x" {& M' k2 h4 Zlll:
2 [8 I- P7 L% f, u dw offset cs:llll ; return address
9 K# p9 O9 D/ m* U% N. W7 A: }4 bllll:4 C& p' a3 `8 w* N
endm2 X! T9 {! Z- N% X& _$ U/ y; t9 m( `+ m
0 B0 Y% K2 V$ s7 S" q
关于ret_sp这个宏我有一点没有搞明白 n! z0 W0 V: x' E
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?2 y* z u: m) r C4 M* d
为什么不能直接写成:6 A" w5 |6 F, B! V
ret_sp macro dummy
& K- c; p/ v; R0 _& ~& } local lll 8 ?3 k, f# c+ @, x+ w6 G$ u
even3 d! D6 R. g' c4 |$ e, w1 z9 u7 n
mov sp, offset cs:lll / e% P* w8 J6 D
jmp dummy
! S3 K: s9 v5 J& p5 C: C# p9 xlll:
! V) x/ x6 b2 I K( M7 ]7 m% f" ^endm0 b( D/ t& M5 Z* M: U
I9 b7 R& P) K" }! v( P请知道的指点一下,谢谢! |
|