Spec-Zone.ru › GCC 15

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API