代码之家  ›  专栏  ›  技术社区  ›  cube

数组不跨越256字节边界

  •  5
  • cube  · 技术社区  · 14 年前

    是否可以创建一个不跨越256字节边界的数组?即单个数组项的地址只在较低的字节中不同。这比保持数组与256字节对齐的要求要弱。我唯一能想到的解决办法就是 next_power_of_two(sizeof(array)) ,但我不确定这样会出现什么差距。

    它是一个AVR微控制器的库,这将在中断处理程序中为我节省一些宝贵的指令。应该具有此属性的数组在库使用的总静态内存中大约80字节中有54字节长。我正在寻找一种不增加内存需求的方法。

    我使用avr作为gnu汇编和avr ld链接器。

    示例:如果数组从地址0x00f0开始,则在遍历数组时,高位字将从0x00变为0x01。

    我真的不在乎它是从地址0x0100还是0x0101开始,只要它不越界。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Paul R    14 年前

    您只需要64字节对齐即可满足此要求,因此,例如,这应该可以工作:

    uint8_t a[54] __attribute__ ((aligned(64)));
    
        2
  •  0
  •   Eugene Smith    14 年前

    我对AVR微控制器一无所知,但是,一般来说,静态变量通常放在可执行文件的数据部分,并且,由于您的静态内存需求很低,所以您只需要确保数据部分是256字节对齐的。(这可能是默认的。在x86上,通常是。)检查链接器选项。。。