汇编里面的.word代表什么

在学习uboot的时候经常在start.S头文件前面看到:

.word 0x2000
.word 0x0
.word 0x0
.word 0x0

课程解释说是占位用的,是uboot前面的16个字节的header

.word代表是字,一个字长。
字长与处理器的位数有关,比如16位处理器,字长为2Byte:

同理,arm的32位处理器字长为4字节。

.word是怎么排布的?

.word 0x2000
.word 0x1234
.word 0x5678
.word 0x9abc

用winhex把编译后的uboot.bin读出可得
在这里插入图片描述
首先,红框内是16个字节的内容,通过现象分析
分为这样4组,一组4字节。
00 20 00 00
34 12 00 00
78 56 00 00
BC 9A 00 00
得到结论
1.我写进去的只有2个字节,而且是先写入低16位,因为是.word类型的(4字节-32位系统),高16位自动补0
2.写入的时候是从低位到高位以字节为单位写入,以0x1234为例
实际是00 00 12 34 写入后变为 34 12 00 00

为了进一步验证我的想法:
这次写满32位

.word 0x2000aabb
.word 0x12344321
.word 0x56788765
.word 0x9abcbca9

编译后读出:
在这里插入图片描述

.word 0x2000aabb
.word 0x12344321
.word 0x56788765
.word 0x9abcbca9

对应关系
BB AA 00 20
21 43 34 12
65 87 78 56
A9 CB BC 9A
验证结论成立。
结论
1 .word 字长要根据处理器位数决定
2. 数据写入时从低位到高位依次写入,如果没写满则剩下的高位补0。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值