6.31.11 Атрибуты функций 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).В следующем примере на 2 байта экономится для каждого вызова функции
foo.void foo (void) __attribute__((function_vector(0x18))); void foo (void) { } void bar (void) { foo(); }Если функции определены в одном файле, а вызываются в другом, то обязательно напишите это объявление в обоих файлах.
Этот атрибут игнорируется для целевой платформы R8C.
interrupt-
Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерывания. Компилятор генерирует последовательности входа и выхода функции, подходящие для использования в обработчике прерывания, когда этот атрибут присутствует.
Далее: Атрибуты функций M32R/D, Предыдущее: Атрибуты функций IA-64, Наверх: Атрибуты функций [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-8.5.0/gcc/M32C-Function-Attributes.html