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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
! p# u$ [8 Q0 `' O& `2 ~7 D& U        local        llll, lll               
( C' V/ G9 {# F) G        even
5 ~3 B+ \' d+ H0 ~1 J( q7 z        mov        sp, offset cs:lll        
8 |. S3 m6 c5 N6 `5 E3 V        jmp        dummy3 g* b$ H" r7 b, r1 X
lll:
: i) ?' \2 K- X$ b2 }/ n, x$ I        dw        offset cs:llll                ; return address
! _, j  l9 E& V: F% k1 Q6 {2 pllll:$ w4 y( Z( \! E* q0 B5 u; ]7 u  E: b" p! y
endm  [! |4 e0 b" [6 V: {4 [# d' e, V
$ u  m- `; c, R6 \5 F
关于ret_sp这个宏我有一点没有搞明白
0 ^" e+ x+ i: h* H假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
4 U5 _7 a" @" P2 Q为什么不能直接写成:
" L  ^$ f7 D/ ?% E, Kret_sp        macro        dummy                        # v0 [) g4 V6 u) M
        local        lll               + y! d+ P7 {8 [( X1 l$ a" T, s5 ^) N  H1 Q
        even6 C. \5 g# Z8 p9 ]" Y% w* ]. N, C+ @
        mov        sp, offset cs:lll        
& A8 b: {2 j0 K        jmp        dummy9 B& k9 M1 N# O& H
lll:- G0 B! O9 W! }# D: y% u
endm# Q8 l0 I3 \' x  V

  ^1 y0 B! _( w! ~; q' s请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 14:35 , Processed in 0.071050 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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