一、结构体安排
你在结构体上的布局安排对提升性能和代码密度有很重要的影响。在ARM的结构体上有2个主要的问题:第一种是alignment of the structure entries.第二种是结构体整体的大小。
ARM编译器会自动对齐结构体的开始地址,让其对齐结构体内最大尺寸的成员。例如:
struct{
char a;
int b;
char c;
short d;
}
内部如下
address | +3 | +2 | +1 | +0 |
---|---|---|---|---|
+0 | pad | pad | pad | a |
+4 | b[31,24] | b[23,16] | b[15,8] | b[7,0] |
+8 | d[15,8] | d[7,0] | pad | c |
struct{