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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        
8 y- @& e* D- R0 Q9 M        local        llll, lll               + O  W' _6 A! y" m& d5 e  `
        even8 s. T5 x# K+ H4 t; N7 n6 r( t( g
        mov        sp, offset cs:lll        
5 Q9 w' h& F( j7 g        jmp        dummy
: y6 x" {& M' k2 h4 Zlll:
2 [8 I- P7 L% f, u        dw        offset cs:llll                ; return address
9 K# p9 O9 D/ m* U% N. W7 A: }4 bllll:4 C& p' a3 `8 w* N
endm2 X! T9 {! Z- N% X& _$ U/ y; t9 m( `+ m
0 B0 Y% K2 V$ s7 S" q
关于ret_sp这个宏我有一点没有搞明白  n! z0 W0 V: x' E
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?2 y* z  u: m) r  C4 M* d
为什么不能直接写成:6 A" w5 |6 F, B! V
ret_sp        macro        dummy                        
& K- c; p/ v; R0 _& ~& }        local        lll               8 ?3 k, f# c+ @, x+ w6 G$ u
        even3 d! D6 R. g' c4 |$ e, w1 z9 u7 n
        mov        sp, offset cs:lll        / e% P* w8 J6 D
        jmp        dummy
! S3 K: s9 v5 J& p5 C: C# p9 xlll:
! V) x/ x6 b2 I  K( M7 ]7 m% f" ^endm0 b( D/ t& M5 Z* M: U

  I9 b7 R& P) K" }! v( P请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-4 16:19 , Processed in 0.091074 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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