我是靠谱客的博主 曾经老鼠,最近开发中收集的这篇文章主要介绍字的边界对齐问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ARM微处理器中支持字节、半字、字三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)

1、字对齐数据,也就是说每个数据都是用字(32位)来表示的,而ARM中的存储单元都是以字节为单位,那么要索引一个数据,需要连续的4个字节才行,比如,0x0000_0000~0x0000_0003这四个单元存储一个数据,紧接着0x0000_0004~0x0000_0007这四个单元存储第二个数据,那么依此类推,每个数据的存储起始地址为:
0x0000_0000
0x0000_0004
0x0000_0008
0x0000_000c
0x0000_0010
0x0000_0014
......
可见,这些数据的地址最后一个十六进制位按照0、4、8、c循环,而对应的二进制为0000、0100、1000、1100。看出来了吧,这些数由于是0x4(0100b)的整数倍,最后两位都是"00"。
2、同理,半字就是两个字节,那么地址是:
0x0000_0000
0x0000_0002
0x0000_0004
......
由于都是0x2(10b)的整数倍,所以地址的最后一个二进制位都为"0"。
3、字节类型数据就是每个字节地址都用上了。
 

最后

以上就是曾经老鼠为你收集整理的字的边界对齐问题的全部内容,希望文章能够帮你解决字的边界对齐问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部