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

关于ret_sp这个宏的问题

[复制链接]
发表于 2009-9-17 10:17:46 | 显示全部楼层 |阅读模式
ret_sp        macro        dummy                        9 {& d* I; H, P+ X+ L5 Z
        local        llll, lll               
' p8 v, t; ^! e6 `5 `0 M        even6 E4 l* O( @% v# [/ Q2 R2 E
        mov        sp, offset cs:lll          r0 D3 r: \' |: P8 z/ y6 r4 ?& |
        jmp        dummy1 j: ?$ S  j9 p4 i
lll:
" f! b1 Y  K2 x, g        dw        offset cs:llll                ; return address
  f" i: n- l: e/ \" r5 zllll:+ O- Q4 e3 ~, ^  [& W. S- l/ e
endm+ V7 Q3 z( D* N& W: r% h
8 x6 `  e' q( z  E0 Y
关于ret_sp这个宏我有一点没有搞明白8 C$ R3 d. R3 W( s! a- L
假设lll的地址为200h,那么mov        sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
( e$ b$ P4 {/ S6 O为什么不能直接写成:
$ m/ R; `" ?) Z* l: q" p6 a" Mret_sp        macro        dummy                        4 F7 \2 H* U2 F" S
        local        lll               
5 u$ H9 J4 _' o: d& O6 Q9 I) e2 H9 K        even
+ R: M1 R# W8 x4 g" K1 Z4 ~+ D        mov        sp, offset cs:lll        1 q- K6 B* t* p
        jmp        dummy
" W% M: [7 o! V6 Xlll:' r) f& ?. u0 k1 f
endm4 d6 l1 g/ x8 [& d/ T2 ~1 z$ x  x7 k

0 \/ b( g9 z; |, h* @1 B6 u请知道的指点一下,谢谢!
 楼主| 发表于 2009-9-17 19:49:24 | 显示全部楼层
问题已经解决,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-12 08:09 , Processed in 0.044382 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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