【发布时间】:2010-10-13 12:05:33
【问题描述】:
是否可以创建一个不跨越 256 字节边界的数组?也就是说,各个数组项的地址仅在低字节上有所不同。这比保持数组对齐到 256 字节的要求更弱。我能想到的唯一解决方案是与next_power_of_two(sizeof(array)) 对齐,但我不确定以这种方式出现的差距。
它是用于 AVR 微控制器的库,这将在中断处理程序中为我节省一些宝贵的指令。在库使用的大约 80 个字节的总静态内存中,应该具有此属性的数组是 54 个字节长.我正在寻找一种不会增加内存需求的方法。
我正在使用 avr-as gnu 汇编器和 avr-ld 链接器。
示例:如果数组从地址 0x00f0 开始,那么在遍历数组时,高位字将从 0x00 变为 0x01。
我并不关心它是从地址 0x0100 还是从 0x0101 开始,只要它不越界。
【问题讨论】:
-
你需要保持数组的地址对齐吗?既然您已经知道数组是
-
我不需要保持对齐。请参阅我添加的示例。
-
请注意,保持数组与 64 字节边界对齐将满足您的要求 - 您的链接器应该能够对这些分配进行排序,以便你不会浪费内存。
标签: memory assembly alignment avr-gcc