6.4.1.27 Атрибуты функций RX
Следующие атрибуты функций поддерживаются бэкендом RX:
-
fast_interrupt -
Используйте этот атрибут на платформе RX, чтобы указать, что заданная функция является обработчиком быстрого прерывания. Он аналогичен атрибуту
interrupt, за исключением того, что для возврата используетсяfreitвместоreit. -
interrupt -
Используйте этот атрибут, чтобы указать, что заданная функция является обработчиком прерывания. При наличии этого атрибута компилятор генерирует последовательности входа в функцию и выхода из неё, подходящие для обработчика прерывания.
Для целевых платформ RX и RL78 в качестве аргументов атрибута можно указать один или несколько номеров векторов, а также имя альтернативной таблицы. Параметры обрабатываются последовательно, поэтому один обработчик можно назначить нескольким записям в нескольких таблицах. Можно также передать специальную строку
"$default", в результате чего функция будет использоваться для всех незаполненных слотов текущей таблицы.В этом примере показано простое назначение функции одному вектору в таблице по умолчанию (обратите внимание, что для символических имён векторов, специфичных для микросхемы, можно использовать макросы препроцессора):
void __attribute__ ((interrupt (5))) txd1_handler ();
В этом примере функция назначается двум слотам в таблице по умолчанию (с использованием макросов препроцессора, определённых в другом месте) и становится обработчиком по умолчанию для таблицы
dct:void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default"))) txd1_handler ();
-
naked -
Этот атрибут позволяет компилятору сформировать необходимое объявление функции, при этом тело функции может быть написано на ассемблере. Для заданной функции компилятор не генерирует последовательности пролога и эпилога. В функции без пролога и эпилога можно безопасно использовать только базовые инструкции
asm(см. Базовый Asm — инструкции ассемблера без операндов). Хотя использование расширенногоasmили сочетания базовогоasmс кодом C может показаться работоспособным, на такую работу нельзя полагаться, и она не поддерживается. -
vector Этот атрибут RX аналогичен атрибуту
interrupt, включая его параметры, но не превращает функцию в функцию-обработчик прерывания (то есть функция сохраняет обычный ABI вызова функций C). Описание аргументов см. в разделе об атрибутеinterrupt.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/RX-Function-Attributes.html