我发现如果我使用.balign指令将位置计数器与n位地址边界对齐,那么只有在使用指令的地方插入而不是的填充字节。出乎意料的是,汇编器还填充了段末端,使得该段中的最后一个地址也位于n位地址边界。如果n很大,这可能非常浪费。例如
.section .test,"ax",@progbits
.balign 1024
nop
创建一个1024字节长的部分,即使nop指令只需要几个字节(在我的情况下为2,我现在在AVR32上)。
为什么会这样,以及如何避免它(例如,这个例子是2个字节长,在1024个可分割的地址对齐)?