我正在使用GNU链接器脚本,其中bss
部分变量获得非4字节对齐的地址,这是一个大问题,因为变量地址正由硬件使用,需要字对齐的地址。
如果我有10个变量,或者我想让链接器为特定部分中的每个变量生成单词对齐的地址,而不是使用其中一个的align属性,我该怎么办呢?
我尝试使用ALIGN()
但没效果。
这是一个例子:
.bss.a 9cdf8 0x1
.bss.b 9cdf9 0x1
.bss.b
对于所有变量,我想获得0x9cdf8 + 4
等。
我怎样才能做到这一点?
答案 0 :(得分:0)
您可能最好在标记需要4字节对齐的变量时进行标记。例如,在gcc中:
char a __attribute__((aligned(4)));
char b __attribute__((aligned(4)));
请参阅http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Variable-Attributes.html