Я пробую к байту - выравнивают функцию к 16-байтовой границе с помощью 'выровненный (16)' атрибут. Я сделал следующее: void __attribute__((aligned(16))) function() { }
(Источник: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html)
Но когда я компилирую (gcc foo.c; никакие make-файлы или используемые сценарии компоновщика), я получаю следующую ошибку:
Нечто c:99: ошибка: выравнивание не может быть указано для 'функции'
Я пытался выровняться к 4,8,32, и т.д. также, но ошибка остается тем же. Мне нужно это для выравнивания Процедуры обработки прерывания для находящегося в powerpc процессора. Каков корректный способ сделать так?
Почему бы вам просто не передать -falign-functions = 16 в gcc при компиляции?
Вероятно, вы используете старую версию gcc, которая не поддерживает этот атрибут. Ссылка на документацию, которую вы предоставили, предназначена для «текущей разработки» gcc. Просматривая различные выпуски, атрибут появляется только в документации для gcc 4.3 и последующих версий.