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