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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
/ F5 x$ y: M+ j. E        local        llll, lll               
/ F( a' G+ h# ?$ o- Z        even
  Y/ Y8 N5 @, ^/ S        mov        sp, offset cs:lll        4 ^0 u7 T: `  W5 S! K
        jmp        dummy
+ t; Z( Q% F( `$ y# Ulll:
( ~; s0 {3 U  _        dw        offset cs:llll                ; return address3 p0 r  F2 u( R+ M% Y. \
llll:
2 r$ Q: t) r( a* B& nendm4 T+ Z- r# w& ~: _( D3 ^
' j/ ?" a& f1 {
关于ret_sp这个宏我有一点没有搞明白
# Z+ O* a# g/ ?8 H" l% I' x6 B6 P假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
+ ^0 m; i1 E! E9 _7 V* X: T为什么不能直接写成:
. H  j! b4 n) k. Fret_sp        macro        dummy                        4 B& z0 S1 g) W# Z% x2 Z* s
        local        lll               : o( i  D$ R5 ^( j1 L4 F. |
        even$ ^; I. @0 o0 A4 Q
        mov        sp, offset cs:lll        
% c5 d- {, Y2 b) s' ?        jmp        dummy' W+ `" }) Q/ b0 i( N4 z" \
lll:# {: w$ N' l5 d, h
endm7 f  M: }/ j; D$ D0 J- ^- Z. w0 x

2 H8 w, J1 _6 V* _2 p* C请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 13:34 , Processed in 0.038148 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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