6.31.19 Атрибуты функций MSP430
Эти атрибуты функций поддерживаются бэкендом MSP430:
critical-
Критические функции отключают прерывания при входе и восстанавливают предыдущее состояние прерывания при выходе. Критические функции также не могут иметь атрибутов
nakedилиreentrant. Они могут иметь атрибутinterrupt. interrupt-
Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерывания. Компилятор генерирует последовательности входа и выхода функции, подходящие для использования в обработчике прерывания, когда этот атрибут присутствует.
Вы можете предоставить аргумент к атрибуту прерывания, который указывает имя или номер. Если аргумент является числом, он указывает слот в таблице векторов прерываний (0 - 31), которому должен быть назначен этот обработчик. Если аргумент является именем, он рассматривается как символическое имя для слота вектора. Эти имена должны совпадать с соответствующими записями в скрипте компоновщика. По умолчанию распознаются имена
watchdogдля вектора 26,nmiдля вектора 30 иresetдля вектора 31. naked-
Этот атрибут позволяет компилятору создать требуемое объявление функции, позволяя при этом телу функции быть ассемблерным кодом. Указанная функция не будет иметь пролога/эпилога, сгенерированных компилятором. В голых функциях безопасно включать только базовые
asmинструкции (см. Базовый ассемблер). Хотя использование расширенныхasmинструкций или комбинации базовыхasmи C-кода может показаться работающим, их нельзя гарантированно использовать надёжно, и они не поддерживаются. reentrant-
Реентерабельные функции отключают прерывания при входе и включают их при выходе. Реентерабельные функции также не могут иметь атрибутов
nakedилиcritical. Они могут иметь атрибутinterrupt. wakeup-
Этот атрибут применяется только к функциям прерывания. Он будет игнорироваться, если применён к функции, не являющейся функцией прерывания. Функция прерывания пробуждения выведет процессор из любого низкоэнергетического состояния, в котором он может находиться при выходе из функции.
loweruppereither-
В целевом окружении MSP430 эти атрибуты могут использоваться для указания того, должна ли функция или переменная располагаться в низкой памяти, высокой памяти или их размещение должно быть решено компоновщиком. Атрибуты значимы только при компиляции для архитектуры MSP430X.
Атрибуты работают в сочетании со скриптом компоновщика, дополненным указанием места размещения секций с префиксом
.lowerи.upper. Например, наряду с размещением секции.data, скрипт также указывает размещение секции.lower.dataи.upper.data. Цель состоит в том, чтобы секцииlowerразмещались в небольшой, но более доступной области памяти, а верхние секции — в более большой, но медленной области памяти.Атрибут
eitherявляется специальным. Он сообщает компоновщику разместить объект в соответствующей секцииlower, если для него есть место. Если места недостаточно, объект размещается в соответствующей секцииupperвместо этого. Обратите внимание, что алгоритм размещения не очень сложный. Он не пытается найти оптимальное размещение секцийlower. Он просто делает один проход по объектам и делает всё возможное. Использование опций командной строки -ffunction-sections и -fdata-sections может помочь при упаковке, поскольку они производят более мелкие, более легко упаковываемые области.
Далее: Атрибуты функций NDS32, Предыдущее: Атрибуты функций MIPS, Наверх: Атрибуты функций [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/MSP430-Function-Attributes.html