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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        0 m, l" e) o& x+ a1 k( V
        local        llll, lll               7 W# J: \7 z* F# U$ S) n, g% ^- k* v
        even1 S2 O# q- X1 I1 Z* N
        mov        sp, offset cs:lll        
# N% \1 C3 ^+ w& k2 y        jmp        dummy
7 B" h/ V8 s  p2 @7 J$ Flll:# W- W7 E/ W9 f1 K8 \% J1 v
        dw        offset cs:llll                ; return address
7 L/ ~1 B9 B2 N! ollll:
1 z2 ~' ?  d/ e/ W' v( E6 [endm
; @5 T# X4 D9 E+ A& P7 [, W9 J7 y
关于ret_sp这个宏我有一点没有搞明白5 I/ x# U& A! A; t3 q) I' i* t! ~5 @
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
0 K( O5 Q" b# w) {8 k% E9 O# G2 S为什么不能直接写成:
  A% R3 K# i5 X/ ~% @- m; ]- Uret_sp        macro        dummy                        
7 d& w! E! U( n# O) F7 E        local        lll               / J/ b+ [- r9 C" q) E* ?$ j! t/ T+ W
        even
, L8 }0 T- g, @8 ?        mov        sp, offset cs:lll        
9 J! ?/ }' X8 v  u" ?        jmp        dummy2 f! ~; f, A6 }0 Y# m+ d; G
lll:
  P7 l/ f! C' `! m. eendm; B1 p/ N: y7 X* Z$ E) ^

, ^! \& H( |5 T1 W" f# |( [1 i请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 03:39 , Processed in 0.029038 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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