Spec-Zone.ru › GCC 15

6.4.1.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 или сочетание базового asm с кодом C может казаться работоспособным, на это нельзя надёжно рассчитывать, и такая возможность не поддерживается.

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

Spec-Zone.ru

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