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