|
ret_sp macro dummy ) O- N/ b( N9 E0 P6 i* X
local llll, lll
1 }! ~7 e+ o+ k6 h8 d k1 K( g even
$ n# W7 f/ v: j8 I1 j2 J mov sp, offset cs:lll ' D- z: _2 F2 \
jmp dummy% u [# E* e; i4 o1 K! l5 B
lll:
" L. ]9 T& g$ Y1 v* } dw offset cs:llll ; return address
1 G m4 ^0 k$ z" Y" y2 ^llll:
! A: r# Q' s* `( fendm
9 k4 d. _8 ?" y: ^9 o( x9 E# \
( [' i2 S0 J5 E# ^2 P2 H6 m ?关于ret_sp这个宏我有一点没有搞明白
* c7 w& T* q+ Y: n假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?. Y" @3 {9 [* G9 z6 f
为什么不能直接写成:
- D+ n2 v8 b) w- cret_sp macro dummy " `1 v3 ]# q( Z9 [9 W8 [
local lll 6 r7 l8 K- R T# k
even# ]. C% a3 P# [
mov sp, offset cs:lll 3 r9 W( w' i! v! a; U; J2 `
jmp dummy
2 Z# G, t" I$ f- z/ Xlll: M% K( w% e0 v' q5 ~
endm
) l |3 T1 H0 N% }$ p1 G! c
K. |2 T: K& M p( T; n b* b请知道的指点一下,谢谢! |
|