Можно ли создать массив, который не пересекает 256-байтовую границу?То есть адреса отдельных элементов массива отличаются только младшим байтом.Это более слабое требование, чем поддержание выравнивания массива в 256 байтов.Единственное решение, о котором я мог подумать, это выравнивание по next_power_of_two(sizeof(array))
, но я не уверен насчет пробелов, которые могли бы появиться таким образом.
Это для библиотеки для микроконтроллеров AVR, и это спасло бы меняНесколько ценных инструкций в обработчике прерываний. Массив, который должен иметь это свойство, имеет длину 54 байта из 80 байтов общей статической памяти, используемой библиотекой.Я ищу способ, который не увеличивает требования к памяти.
Я использую ассемблер gnu avr-as и компоновщик avr-ld.
Пример: если массив начинается садрес 0x00f0, тогда старшее слово изменится с 0x00 на 0x01 при обходе массива.
Мне все равно, начинается ли оно с адреса 0x0100 или 0x0101, если оно не пересекает границу.