ARM内存边界对齐的结构体

2019-08-16 14:12:16 来源:eefocus
标签:
CPU   程序   ARM

默认情况下,在32位cpu里,gcc对于结构体的对齐方式是按照四个字节来对齐的。看以下结构体

  

typedef struct pack{

  

char a;

  

int b;

  

short c;

  

}pack;

  

对于Pack结构体,默认情况下在arm/386平台下(别的平台没试过)sizeof(pack)=12,求解过程如下:

  

sizeof(char)=1;

  

下一个int b,由于是四个字节,要求b的开始地址从32的整数倍开始,故需要在a后面填充3个没用的字节,记为dump(3),sizeof(b)=4,此时相当于结构体扩充为

  

char a;

  

char dump(3);

  

int b;

  

看short c,现在c的前面有8个字节,c是两个字节,c的开始地址是从16的整数开始,在b前面不需再加东西.此时对于结构体来说,sizeof(pack)=10,但是这不是最终结果, http://tiyubisai.com/video_news/news_135587.html 最后总的字节数也要能被4个字节整除,所以还需在short c后面再加

  

dump(2);

  

?#39318;?#30340;字节数为12.

  

?#27604;?#20197;上说的只是简单的情况,下面谈谈arm,x86在gcc里关于内存边界字节对齐的区别.对于同样的结构体,在386下

  

#prama pack(1)

  

后,sizeof(pack)=1 4 2=7

  

而在arm下同样的操作sizeof(pack)=1 4 2 1=8,?#27492;?#28982;b根a之间不要填充但总的长度必须要是4的整数倍.

  

在arm 下要使结构体按指定字节对齐,可行的方法

  

1.在makefile里加-fpack-struct 选项,这样的话对所有的结构按一字节对齐.

  

不得不说,确实?#24515;?#20040;些质量较差的程序可能需要你部分自然对齐,部分一字 节对齐,此时

  

2. typedef struct pack{

  

}__attribute__((packed))

  

可利用__attribute__属性

  

?#27604;?#26368;后的方式,还是自己去看arm体系结构与gcc编译选项了。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
ARM 加入 CXL 开放合作联盟,正式与华为结盟

与非网9月16日讯,据外媒报道,Arm已正式加入Compute Express Link(CXL)开放合作联盟,考虑到ARM芯片的应用范围,此举影响将非常深远。

A13 ?#30475;?#30340;背后:外观奇葩缺乏 5G,但处理器才是霸主

在一份疑似iPhone 11 Pro的Geekbench 4.4跑分成绩中,A13芯片的CPU取得了5472/13769的单核/多核分数。

串口通信的优缺点解析,什么情况下适合用串口通信?
串口通信的优缺点解析,什么情况下适合用串口通信?

UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。

摩尔定律存亡争论不休,能否“修正”重出舞台?

与非网9月12日讯,“摩尔定?#26194;?#21435;是每5年增长10倍,每10年增长100倍。 而如今,摩尔定律每年只能增长几个百分点,每10年可能只有2倍。 因此,摩尔定律结束了。 ”

兼容性差、无法跑ARM 64位程序成 Windows on ARM 的致命缺陷?

在IFA上,Intel以运行Dropbox、Logitech、Plantronics等程序的兼容性问题,和无法顺利跑ARM64游戏为例,来梦里抨击Windows on ARM设备。

更多资讯
联发科借5G东风起,2020年将出货千万颗5G芯片?

与非网9月17日讯,近日,联发科宣布要在5G方面加大投资,预计2020年出货6000万颗5G芯片,而且平均价格达到4G芯片的4-5倍。

?#23601;?#21322;导体出货额环比增长 43%,韩国进口的氟化氢其实有 46.3% 来自我国?

随着日韩的半导体之争愈演愈烈,韩国也在?#20013;?#25512;进对抗日本的种种措施,与此同时,中国在半导体领域却正迎来前所?#20174;?#30340;关注。

大手笔,紫光将投资8000亿元用于DRAM芯片的研发量产?

与非网9月17讯,据韩媒报道,紫光集团最近宣布,将投资8000亿元,用于未来10年加快DRAM芯片的量产。公司将在武汉建设研发?#34892;模?#22312;重庆建设生产基地,预计2021年投产。

海思推出首款基于AVS3标准的8K、120P超高清芯片

与非网 9 月 16 日讯,华为海思近日推出了一款超高清芯片Hi3796CV300。

印度也开始部署超级计算机,超算领域迎来新玩家

与非网 9 月 16 日讯,印度近日部署了首台超算,名为Param Shavak。

王牌战士什么时候开服
3d彩宝走势图带连线 vr赛车一套设备多少钱 最新七开奖结果查询 排列五复式投注价格表 足彩胜平负澳客网 黑龙江时时中奖设置 云南体彩时时彩开奖结果 宝马线上 pk10注册38 新时时彩合买