u-boot汇编语法
_TEXT_BASE:
.word TEXT_BASE
.globl _armboot_start
_armboot_start:
.word _start
上面的意思我明白 但是上面的.word是什么意思呢?有相关的资料可以查询么?谢谢啦
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
_TEXT_BASE:
.word TEXT_BASE
.globl _armboot_start
_armboot_start:
.word _start
上面的意思我明白 但是上面的.word是什么意思呢?有相关的资料可以查询么?谢谢啦
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
1. 没有所谓“u-boot汇编”,只有针对某种处理器体系结构的汇编;
2. 你的代码应该是针对ARM的U-boot的启动阶段的代码;
3. .word .global都是ARM汇编当中的伪指令(directive),具体含义可以看看ARM的指令集,或者干脆google一下;
4. _TEXT_BASE是U-boot的加载地址,在你的board目下的config.mk里面定义;
5. _armboot_start仅仅是个语句标号;
这么详细 感激涕零啊。
都是伪指令 呵呵
以这行为例:
_armboot_start:
.word _start
解释:
1.
_armboot_start 是标号,标号,也就是某个数字,其实也对应着某个地址,
上述代码,编译后的相关汇编代码是类似于这样的:
即 _armboot_start 其实也就是 0x33d00044
2.
.word _start
(1).word
word 是四个字节,就类似于 C 语言中的定义一个 long 型的变量,占用 4 字节
(2).word _start
该 word 的四字节空间,里面放的值是_start,以上面汇编代码为例,_start 就是 0x33d00000
所以,
_armboot_start:
.word _start
用 C 语言表示,就容易明白了:
换句话说,这个标号_armboot_start,就相当于 c 语言中的一个指针。
关于.word 的具体语法,去这里看: http://re-eject.gbadev.org/files/GasARMRef.pdf
过些天,我会贴出来那个文档,是最近花很多精力整理出来的,关于 uboot 中 start.S 的详细解释,详细到每一个行代码的含义都会解释,并且包含了相关指令的语法,到时候,看了这文档,你应该就明白 start.s 中的绝大部分的细节了。
好像汇编很验证搞的样子,一直不敢怎么接触