6.33.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) к 2-байтовым адресам, установленным в таблице векторов. Поэтому необходимо убедиться, что все подпрограммы векторов специальной страницы отображаются в диапазоне адресов от 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-11.4.0/gcc/M32C-Function-Attributes.html