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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
% q& M1 ?3 g* ?2 \! x+ F) g; X        local        llll, lll               
2 u* ]  w% O5 ?& D  D        even
9 K0 ?+ R6 L, T1 U8 ]        mov        sp, offset cs:lll        6 a2 Q+ ?( \& [' T; K3 W% G
        jmp        dummy
) i& j* f. I  u. T: \lll:% h, ~* d7 C$ H
        dw        offset cs:llll                ; return address
6 b/ h% ~3 A: \9 c6 Q0 tllll:6 Y# x" n. u7 k% g& v
endm+ u' L8 `0 f4 w7 p+ S' u0 P! w
' H' a0 |+ ?7 h* h% y9 B1 f
关于ret_sp这个宏我有一点没有搞明白
2 m4 o( B1 m! D) h9 E" h假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
* o6 ~% n# c2 I# L为什么不能直接写成:# V( F0 ?( O: l0 u0 _6 Q
ret_sp        macro        dummy                        
' P7 S" N. R" V: V# v        local        lll               : p7 @- U" Z3 T) m; r; G
        even
& W0 K. r& v1 _7 Y2 d2 _. _+ O        mov        sp, offset cs:lll        
  h  W3 Q0 Q6 r, c" x: V4 E4 K        jmp        dummy
/ b5 \5 n) A6 I$ s# z' olll:' g8 e  b& P, z0 s
endm
6 }! ~( |/ m  N& h! ^0 q$ D
" x. l$ b2 ]: M请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-12 06:49 , Processed in 0.022027 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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