您的位置 首页 设计

ARM专题之字节对齐

什么叫字节对齐?如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。举例说明四字节对齐:对内存进…

什么叫字节对齐
假如一个数据是以能被4 整除的地址开端的接连存储,那么它便是字对齐,不然便对错字对齐。举例说明四字节对齐:对内存进行操作时,被拜访的地址有必要为4的倍数。假如分配到的地址的地址不是4的倍数时,CPU实践拜访的地址仍是依照字对齐的方法来操作。

用ADS的ARMC Complier下Optimization Level或许引起问题,其间的一个问题便是字节对齐的问题。下面讲讲问题的现象及本质。

其时问题的现象是:程序运用一公共变量Buf创立行列,假如ADS编译优化选项选用Minium则软件作业正常;源码不变,假如选用ALL优化,则不正常,数据紊乱且无法作业。为了发现问题,咱们分别用Minium和ALL编译,在反汇编条件下单步盯梢程序,调查CPU寄存器和内存变量的改变状况。

当内存开始地址为4字节对齐地址的状况时,编译器分配地址和实践地址共同,因而不存在上述问题。

结 论:

在ARM嵌入式体系中,当把一个内存区域初始化为某个结构体时,有必要留意字节对齐的状况。假如该内存开始地址为非对齐地址,不只得不到预期的成果,还或许导致一些很古怪的让人无法了解外表问题。在C层面上不太简单调查到这些问题的本质,只要深化到汇编一层去剖析程序,才或许了解这些现象的深层原因。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/276669.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部