解释什么是字对齐什么是半字对齐(转载)

本文介绍了ARM处理器如何访问存储器中的不同数据类型,包括字节、半字和字的访问方式及其对齐要求。文中详细解释了半字对齐和字对齐的概念,并指出ARM指令在存储器中必须遵循特定的对齐规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ARM 处理器对存储器空间的访问分辨率以字节为最小单位;ARM 处理器还支持 16bit 数据(2 字节)的存储器访问和 32bit数据(4 子节)的存储器访问。在ARM 中将32 位的数据称之为‘字’,将 16 位的数据称之为‘半字’。
    ARM 处理器在对于“字”/ “半字”数据进行访问时,对数据的存储格式是有要求的【书中讲到若不按照如此要求:可能存储器系统的实现更加困难;可能给ARM系统的移植带来麻烦(缺少统一标准);标准软件(编译器和软件工具)在不遵守规则的系统中可能不工作。】在存储器紧邻的两个字节单元,并且首字节地址必须能被2整除,这样存储的 16bit 数据称为 ‘半字对齐’存储数据,16bit 数据这样的存储方式称为 ‘半字对齐’存储。类似的,ARM 处理器在进“字”数据访问时,要求被访问的“字”必须 存放在存储器紧邻的4 个字节单元,并且首字节地址必须能被4 整除,【按照二进制从低位数起的1248换算法,能被2整除最低位的1不能有,能被4整除,低位的1和2都不能有】这样存储的32bit 数 据称为‘字对齐’存储数据,32bit 数据这样的存
储方式称为‘字对齐’存储。   
    能被2 整除数据的二进制表示,其最低位一定是‘0’;能被4 整除数据的二进制表示,其最低两位一定是‘00’。ARM 体系要求32 位长的ARM 指令在存储器中必须字对齐存储,16 位长的 Thumb 指令必须半字对齐存储。因此,在ARM 状态下,R15  的值总是能被4 除,也就是R15 寄存器的最低2 位总是 00;Thumb 状态下,R15 的值总是能被2 整除,也就是R15 寄存器的最低位总是0。【借此就能够检测处理器工作于何种状态之下】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值