6.33.28 Атрибуты функций 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(см. 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-9.5.0/gcc/RX-Function-Attributes.html