曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6705|回复: 1
打印 上一主题 下一主题

header.S 中的 start_of_setup 跳转用法

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2010-12-24 20:30:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 arch/x86/boot/header.S 的 _start 开始处有这么一个用法:
_start:
                 # Explicitly enter this as bytes, or the assembler
                 # tries to generate a 3-byte jump here, which causes
                 # everything else to push off to the wrong offset.
                 .byte   0xeb            # short (2-byte) jump
                 .byte   start_of_setup-1f
1:
....
start_of_setup:
...
实际上,这两个字节构成了一个跳转。这是一种硬编码用法。关于硬编码参考:http://www.groad.net/bbs/read.php?tid-3000.html

这里需要注意的是,在  .byte   start_of_setup-1f 中,1f 不是表示十六进制 0x1f。 1 这里是一个标号,f 表示 fordward ,在前面的;如果是在其后,则是 b (backword)。所以,这条语句算出了 start_of_setup 标号和 1 标号之间的偏移(字节数)。组合起来看,实际上就是跳转到了 start_of_setup 标号处。

0

主题

1

帖子

1

积分

初学弟子

积分
1
沙发
发表于 2012-4-12 15:32:08 | 只看该作者
我的妈呀,爱死你了








礼品
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-11-1 07:49 , Processed in 0.062578 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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