首页 > 代码库 > 地址对齐
地址对齐
ARM指令和51单片机指令不同,ARM所有指令的长度都是固定的,都是4个字节32位。而51单片机的指令的长度不是固定的,有单字节指令也有双字节指令。
ARM的数据总线宽度也是32位的,所以ARM可以处理32位的数据,这就要求所有的数据也必须是存放在地址为4的整数倍的单元处。
正常情况下,R15中的值应该为4的整数倍,访问数据时给的地址也应该是4的整数倍。这种情况就是地址对齐。如果不满足这种情况,那么就是非地址对齐。
非地址对齐访问程序存储器:
当访问程序存储器时,所给的地址是非对齐的,那么对于ARMv3及以下版本的处理器来说,会交由存储系统来忽略R15中的低两位(也就是说地址会原封不动地送到存储系统),然后进行取址。对于ARMv4及以上版本的处理器,如果出现非对齐访问,那么会出现不可预知的结果。
对于Thumb指令,如果出现非地址对齐访问程序存储器,那么最低位将会由存储器系统来忽略,然后进行取址。
非地址对齐访问数据:
不同的指令会出现不同的处理情况。
1、出现不可预知的错误。
2、交由存储系统来忽略地址的低两位,也就是说地址原封不动地送到存储系统中。
3、由处理器内核忽略地址的低两位。
地址对齐
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。