u-boot汇编语法

发布于 2022-10-15 10:19:54 字数 170 浏览 55 评论 0

_TEXT_BASE:
.word TEXT_BASE
.globl _armboot_start
_armboot_start:
.word _start

上面的意思我明白    但是上面的.word是什么意思呢?有相关的资料可以查询么?谢谢啦

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

明月夜 2022-10-22 10:19:54

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仅仅是个语句标号;

花之痕靓丽 2022-10-22 10:19:54

这么详细 感激涕零啊。

待天淡蓝洁白时 2022-10-22 10:19:54

都是伪指令 呵呵

余罪 2022-10-22 10:19:54

以这行为例:

_armboot_start:
.word _start

解释:
1.
_armboot_start 是标号,标号,也就是某个数字,其实也对应着某个地址,
上述代码,编译后的相关汇编代码是类似于这样的:

33d00044 <_armboot_start>:
33d00044: 33d00000 .word 0x33d00000

即 _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 = *( (unsigned long *)0x33d00044 )=_start = 0x33d00000

换句话说,这个标号_armboot_start,就相当于 c 语言中的一个指针。

关于.word 的具体语法,去这里看: http://re-eject.gbadev.org/files/GasARMRef.pdf

情魔剑神 2022-10-22 10:19:54

过些天,我会贴出来那个文档,是最近花很多精力整理出来的,关于 uboot 中 start.S 的详细解释,详细到每一个行代码的含义都会解释,并且包含了相关指令的语法,到时候,看了这文档,你应该就明白 start.s 中的绝大部分的细节了。

不一样的天空 2022-10-22 10:19:54

好像汇编很验证搞的样子,一直不敢怎么接触

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文