6.33.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 -
Этот атрибут позволяет компилятору создать необходимое объявление функции, при этом позволяя телу функции быть кодом ассемблера. Указанная функция не будет иметь пролога/эпилога, сгенерированных компилятором. В функциях `naked` безопасно включать только базовые
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-13.3.0/gcc/RX-Function-Attributes.html