Spec-Zone.ru › GCC 12

6.33.4 Атрибуты функций ARC

Эти атрибуты функций поддерживаются бэкендом ARC:

interrupt

Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерываний. Компилятор генерирует последовательности входа и выхода функции, подходящие для использования в обработчике прерываний, когда этот атрибут присутствует.

В ARC вы должны указать тип прерывания, который будет обрабатываться, в параметре атрибута прерывания следующим образом:

void f () __attribute__ ((interrupt ("ilink1")));

Допустимые значения для этого параметра: ilink1 и ilink2 для архитектуры ARCv1, и ilink и firq для архитектуры ARCv2.

long_call
medium_call
short_call

Эти атрибуты указывают, как вызывается конкретная функция. Эти атрибуты переопределяют командные строки -mlong-calls и -mmedium-calls (см. Параметры ARC) и #pragma long_calls настройки.

Для ARC функция, помеченная атрибутом long_call, всегда вызывается с помощью инструкций косвенного вызова с использованием регистров, что позволяет разместить вызываемую функцию в любом месте 32-битного адресного пространства. Функция, помеченная атрибутом medium_call, всегда будет достаточно близка, чтобы её можно было вызвать с помощью безусловной инструкции перехода и вызова с 25-битным смещением от места вызова. Функция, помеченная атрибутом short_call, всегда будет достаточно близка, чтобы её можно было вызвать с помощью условной инструкции перехода и вызова с 21-битным смещением от места вызова.

jli_always

Принудительно вызывает определённую функцию с помощью инструкции jli. Инструкция jli использует таблицу, хранящуюся в разделе .jlitab, которая содержит расположение функций, адресованных с помощью этой инструкции.

jli_fixed

Идентично предыдущему, но местоположение функции в таблице jli известно и указано в качестве параметра атрибута.

secure_call

Этот атрибут позволяет помечать функции защищённого кода, которые могут вызываться из обычного режима. Местоположение функции защищённого вызова в таблице sjli необходимо передать в качестве аргумента.

naked

Этот атрибут позволяет компилятору создать необходимую декларацию функции, при этом позволяя телу функции быть ассемблерным кодом. Указанная функция не будет иметь пролога/эпилога, сгенерированных компилятором. В функциях без пролога/эпилога можно безопасно включать только базовые asm операторы (см. Базовый ассемблер). Использование расширенных asm операторов или комбинации базовых asm операторов и кода C может работать, но их надёжность не гарантируется, и они не поддерживаются.

Далее: Атрибуты функций ARM, Предыдущее: Атрибуты функций AMD GCN, Вверх: Атрибуты функций [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/ARC-Function-Attributes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API