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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
6 S# Z% l; }* \( ]: t3 y        local        llll, lll               1 r' q, C5 O% c+ B+ \) h( n
        even
' F1 D/ l; n/ O/ d. o1 m        mov        sp, offset cs:lll        + L4 H: C3 f5 F$ J$ O# L1 ~- _
        jmp        dummy/ l) o3 e! C% o- K; ?% v# j
lll:1 K3 I& ^. C$ M1 u. X( f, E/ C
        dw        offset cs:llll                ; return address* s# H8 r4 j; F; d9 c; ^* a
llll:
" a# c/ i$ |8 `+ ]# @4 t$ e* }, L& oendm
- n4 J9 c9 e$ @3 g3 k- p2 }* \) R9 W0 K9 E& ?6 `
关于ret_sp这个宏我有一点没有搞明白
0 F9 c. [4 Z/ ]! l假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
4 G& B3 ^- J& r  X- {为什么不能直接写成:
7 w% m; ?0 H. D- [/ d2 B# P6 }ret_sp        macro        dummy                        
2 e0 V! I9 a- _' R. i        local        lll               0 b" H, e8 m: [) K; ^- L. Q
        even8 H! S' I. i& r3 R: v4 J
        mov        sp, offset cs:lll        0 C' C: J8 e# W- d' u- b8 U0 F
        jmp        dummy
) g/ a+ p2 `* Alll:5 v9 D6 K9 w4 ~
endm
3 R6 _7 ~! v1 _0 I4 X" Y
2 M  Q. V4 b( \, u: o2 {: L1 J请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-21 21:57 , Processed in 0.345245 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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