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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        ' w8 K% _) Q, c6 @. I3 I# `/ ~" J6 \
        local        llll, lll               ( Y1 Q) w% |* m
        even
) h/ L0 q5 P) S% [! ]9 c0 d2 I        mov        sp, offset cs:lll        $ c& {# p# Z" T( o. j
        jmp        dummy
6 O8 t0 X- p6 N: r6 T5 H+ X" c3 Elll:: s8 K7 h, y+ D
        dw        offset cs:llll                ; return address% }; Y5 N8 l2 Y' e3 M3 y2 {$ E
llll:
9 {+ U4 v* e: wendm& k: p' K1 h0 n' `. u$ I; {) h3 o

) z2 n. o" V2 Q1 }0 l" f; c0 m7 w0 X7 F关于ret_sp这个宏我有一点没有搞明白
- w3 H  ^+ t8 q1 R假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?4 C3 e  E' i- @9 Y" Y
为什么不能直接写成:
3 l, h& ~8 O$ t4 m8 C: nret_sp        macro        dummy                        
, y2 _3 u+ y# |9 r        local        lll               
8 ~7 q  j) E& F' q, A) U- j        even6 O5 @* w7 M9 D/ ^: D; U
        mov        sp, offset cs:lll        
, s2 Q  h2 q3 Q7 L        jmp        dummy
6 {( D- g- ~2 c4 _  g7 Rlll:1 G% V& P) r; x
endm
* K8 L( S! n) Z7 D* R
* W' U7 O4 r, n请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 20:58 , Processed in 0.058351 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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