当前位置: 技术问答>linux和unix
arm字和半字对齐困惑
来源: 互联网 发布时间:2016-12-08
本文导语: arm有字和半字对齐,那么如果是程序中连续定义两个char型变量,那么这两个变量是连续放在一起,还是放一个变量后,然后中间隔3个或1个字节再放剩下的那个变量, 还有,就是如果这两个char型变量是连续放在一起...
arm有字和半字对齐,那么如果是程序中连续定义两个char型变量,那么这两个变量是连续放在一起,还是放一个变量后,然后中间隔3个或1个字节再放剩下的那个变量,
还有,就是如果这两个char型变量是连续放在一起的,如果要对第二个变量进行访问的话,是怎么去访问的,如果是直接对它所在的地址进行访问,那么此时就是对非对齐的数据进行访问了,那是不是会出错啊。
还有,就是如果这两个char型变量是连续放在一起的,如果要对第二个变量进行访问的话,是怎么去访问的,如果是直接对它所在的地址进行访问,那么此时就是对非对齐的数据进行访问了,那是不是会出错啊。
|
当连续申明两个char变量时,这两个变量是连续放在一起的 当对字节进行加载互存储时没有要求按字对齐,这一点你可以去看他的指令说明
更多技术文章敬请关注:武汉华嵌-嵌入式培训专家,国内领先的嵌入式服务机构,
http://www.embedhq.org
更多技术文章敬请关注:武汉华嵌-嵌入式培训专家,国内领先的嵌入式服务机构,
http://www.embedhq.org
|
连续定义的两个变量应该是地址连续的,结构体内的变量才需要对齐吧 ,直接根据前一个char变量可以计算下一个char变量的地址
|
我的理解:
字节对齐是和变量的类型有关吧 char型就占一个字节 存在任何(奇偶)都可以吧
int型 假如占四字节 才需要按照你说的方式存放
字节对齐是和变量的类型有关吧 char型就占一个字节 存在任何(奇偶)都可以吧
int型 假如占四字节 才需要按照你说的方式存放
|
一个字是四个字节吧,半字就是两个字节。字符变量没什么对其要求,所以应该是连续存放。
字对齐是指变量的收低址需是4的倍数,半字对齐是变量的首地址是2的倍数。
字对齐是指变量的收低址需是4的倍数,半字对齐是变量的首地址是2的倍数。