6.4.1.14 Атрибуты функций M32C
В бэкенде M32C поддерживаются следующие атрибуты функций:
-
bank_switch -
При добавлении к обработчику прерывания для порта M32C этот атрибут заставляет пролог и эпилог использовать переключение банков для сохранения регистров вместо сохранения их в стеке.
-
fast_interrupt -
Используйте этот атрибут для порта M32C, чтобы указать, что заданная функция является обработчиком быстрого прерывания. Он аналогичен атрибуту
interrupt, за исключением того, что для возврата используетсяfreitвместоreit. -
function_vector -
Для целевых платформ M16C/M32C атрибут
function_vectorобъявляет функцию вызова подпрограммы специальной страницы. Использование этого атрибута уменьшает размер кода на 2 байта для каждого сгенерированного вызова подпрограммы. Аргументом атрибута является номер записи вектора из таблицы векторов специальной страницы, содержащей 16 младших битов адреса входа в подпрограмму. Для каждой таблицы векторов задан номер специальной страницы (от 18 до 255), используемый в инструкцияхjsrs. Адреса перехода к подпрограммам формируются добавлением 0x0F0000 (для целевых платформ M16C) или 0xFF0000 (для целевых платформ M32C) к двухбайтовым адресам, заданным в таблице векторов. Поэтому необходимо убедиться, что все подпрограммы специальной страницы размещены в диапазоне адресов от 0x0F0000 до 0x0FFFFF (для M16C) и от 0xFF0000 до 0xFFFFFF (для M32C).В следующем примере для каждого вызова функции
fooэкономятся 2 байта.void foo (void) __attribute__((function_vector(0x18))); void foo (void) { } void bar (void) { foo(); }Если функции определены в одном файле, а вызываются в другом, обязательно укажите это объявление в обоих файлах.
Для целевой платформы R8C этот атрибут игнорируется.
-
interrupt Используйте этот атрибут, чтобы указать, что заданная функция является обработчиком прерывания. Если присутствует этот атрибут, компилятор генерирует последовательности входа в функцию и выхода из неё, подходящие для использования в обработчике прерывания.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/M32C-Function-Attributes.html