cub*_*ube 5 memory assembly alignment avr-gcc
是否可以创建一个不跨越256字节边界的数组?也就是说,各个数组项的地址仅在低位字节中有所不同.这比将数组保持为256字节所需的要求要弱.我能想到的唯一解决方案是调整next_power_of_two(sizeof(array)),但我不确定这种方式会出现的差距.
它适用于AVR微控制器的库,这可以在中断处理程序中省去一些宝贵的指令.应该具有此属性的数组长度为54字节,而库中使用的总静态存储器大约为80字节.我正在寻找一种不会增加内存需求的方法.
我正在使用avr-as gnu汇编程序和avr-ld链接器.
示例:如果数组从地址0x00f0开始,则在遍历数组时,较高的字将从0x00更改为0x01.
我不关心它是否从地址0x0100或0x0101开始,只要它不跨越边界.
您只需要 64 字节对齐即可满足此要求,因此例如这应该可以工作:
uint8_t a[54] __attribute__ ((aligned(64)));
Run Code Online (Sandbox Code Playgroud)