找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 7988|回复: 1

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
% N8 u- I+ u8 c/ d4 m1 ?) S$ D        local        llll, lll               9 V& x7 H7 W( i9 }0 ?
        even
9 f7 u7 `, U5 d' A( l1 X) _1 ^        mov        sp, offset cs:lll        
. r# B1 a( f' J' _0 F  o' n9 p9 |        jmp        dummy$ l+ B; ]1 C& w3 B: S1 F  }( Q. c9 s
lll:
% O% C: z7 h0 Q% H6 g        dw        offset cs:llll                ; return address& Z3 W1 m2 V! t0 G$ }; v
llll:7 h, ^" x; i% J5 Q7 a$ X+ p
endm9 v# }1 O' d5 E$ u2 K$ e
9 ^9 r- N9 x* I7 w
关于ret_sp这个宏我有一点没有搞明白3 m* v, @3 t3 u1 m# x9 G0 T4 D
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?4 S; j2 r% {/ C. ?$ v% n5 L
为什么不能直接写成:. b1 Q7 q: d' c: K3 K* W/ c
ret_sp        macro        dummy                        
/ t6 w5 S7 o) w3 U( Q! Q9 P        local        lll                 |6 g; y3 l- l3 u
        even
! K* w. J% y/ p( \5 `        mov        sp, offset cs:lll        1 O+ J6 H8 H' {( R( b6 Y- z: ]5 F
        jmp        dummy
% w6 n0 H  D+ |6 O: k$ y! Q! Ylll:
" g9 T. n0 X3 ?endm
. }# M) K& A" i% _
& o! z+ Z! w( o8 l8 e请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2026-5-16 07:36 , Processed in 3.261489 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表