|
|
ret_sp macro dummy ! A m2 Z* d. }: x, m- ^
local llll, lll 5 U1 V; g# _, }1 q
even
/ u& G0 D4 d" y% H mov sp, offset cs:lll , J2 F. {; t# r7 P( n2 w4 q ]
jmp dummy
0 X6 {& J# b. _0 g }lll:0 R' f, ^& |" z3 Z
dw offset cs:llll ; return address
9 q) y% R# R9 Xllll:# [$ U D" z: |5 g3 k
endm c" n; y. n) @% N- m* B
/ H, e, t0 K* r+ d! M$ [关于ret_sp这个宏我有一点没有搞明白
0 P' l& B) n7 s7 v1 B6 M7 S3 {6 W假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
1 A$ p# {/ w @# c4 y! u g/ s5 a# p为什么不能直接写成:
) P, d3 O- X# Y3 }0 Q$ v. Qret_sp macro dummy
( |4 _7 {1 f; y) T( ?, z local lll
) L4 z( p8 d2 F% B+ m. j. u even% q! N: }+ s' M# x: r
mov sp, offset cs:lll 6 r' ?) D0 q9 W; c5 v* `, j& c7 K
jmp dummy1 A3 z% L/ ~( ]/ ?# q% C
lll:
3 F- J" e# e/ x* U1 Mendm9 `: j( r; t, l+ j2 g+ S
5 o- G3 @+ W% i! M请知道的指点一下,谢谢! |
|