DSP

DSP移植和优化之“预编译伪指令: DATA_ALIGN和STRUCT_ALIGN

2019-07-13 10:16发布

(1)#pragma DATA_ALIGN 语法: #pragma DATA_ALIGN( symbol,constant) 作用:排列symbol到constant 指点的列边界,constant为2的n次方,n=0,1,2.. 说白了就是首地址的字节对齐,首地址字对齐的最大好处就是可以告诉编译器充分利用行或块拷贝。 假设一个CACHE 的line 是128 字节【CACHE line简单说就是CACHE一次加载的字节数】。这样,如果首地址128 字节对齐,那么取一个128 字节的数据,只使用一个CACHE行就够了(如果不对齐,则取一个128 字节的数据至少需要2个CACHE行)。 例: void func(void) { #pragma DATA_ALIGN(x,128) int x[200]; } (2)#pragma STRUCT_ALIGN 语法: #pragma STRUCT_ALIGN(symbol,constant); 这个不用多说,和#pragma DATA_ALIGN很类似,只是#pragma STRUCT_ALIGN是针对结构而言。 typedef strct stSymbol { int A; char B; short C; }STRUCT_TYPEDEF; #pragma STRUCT_ALIGN(stSymbol,128); ===============