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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
! |0 m0 u  B* Y# u+ q        local        llll, lll               & I( w3 B  H6 C6 |! E" |! V3 C2 F
        even- @9 |8 Y6 b+ z8 F* N! E$ C
        mov        sp, offset cs:lll        1 `) v0 _( J' `" s
        jmp        dummy
( f  }) P" N7 l$ Ulll:0 i' k1 ?6 j2 w, H7 o
        dw        offset cs:llll                ; return address
) P( R) V$ f1 e0 h" P. C' Allll:
' `' O) ]; ?  s8 F1 b; @endm) [4 X+ p) X" L2 s0 m! H  e
1 D: q, }7 L# `6 {! O9 o: U
关于ret_sp这个宏我有一点没有搞明白
  g$ o" C+ j) K$ g' l6 `假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?, O( V0 e) _) n* N1 ?( e
为什么不能直接写成:# u& q) \/ j' m0 _+ L1 }" Q) A
ret_sp        macro        dummy                        , b8 R, ]6 M8 b/ }$ o7 R9 z
        local        lll                 A$ j; ^! p5 ~. e5 y
        even
9 R- @; I6 ]3 C: M        mov        sp, offset cs:lll        , L% }6 r2 h" g/ ~9 D8 G
        jmp        dummy
  f; t+ t+ T% T% L) J8 @lll:
9 c4 P: j3 W$ h0 _9 V. fendm
: ?* G3 _1 T5 O" K! C7 b: X. L1 a; W3 q0 U
请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-3 23:10 , Processed in 0.127456 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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