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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        2 `1 |( z8 @" I
        local        llll, lll               
$ M4 O! f6 j1 Q& j# v        even
/ I& v* ^6 f, p: c" T; V% a% u        mov        sp, offset cs:lll        4 c- K: z9 A6 j- c# [+ v
        jmp        dummy
. }" s/ B8 K* glll:+ o3 e8 J) p( i( a% n
        dw        offset cs:llll                ; return address
" G# d: t& u6 @3 W: J4 a9 Fllll:
; ^7 h: n6 l3 R" n' j, Y/ d) q0 @8 y- l1 ]endm
$ ~% ?! ]! t" a" V  Z
1 R  J5 n5 c+ [. G关于ret_sp这个宏我有一点没有搞明白
9 A5 x+ @& I5 i" c0 Z' M" h0 v# I" V' ^假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?3 W: J9 ?6 U7 x( w+ m
为什么不能直接写成:% q+ m  D$ w3 @1 G. U/ N
ret_sp        macro        dummy                        ; k' g; f9 t  Z! ?' }
        local        lll               ; M; P- {  ^: }1 e! d; U! ]
        even
0 e+ N- D) C5 ~& F4 c) `        mov        sp, offset cs:lll        : b+ [9 d" _" t# |  W5 M! u. g; m( m
        jmp        dummy' [* X: f+ i4 l; s
lll:
* C$ m) f- r+ U6 y1 nendm8 g8 e& F6 C! e( g/ w# f

; o! @8 i2 u0 w$ @- p请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 02:17 , Processed in 0.115973 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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