6.31.19 Атрибуты функций MSP430
Эти атрибуты функций поддерживаются бэкендом MSP430:
critical-
Критические функции отключают прерывания при входе и восстанавливают предыдущее состояние прерывания при выходе. Критические функции также не могут иметь атрибуты
nakedилиreentrant. Они могут иметь атрибутinterrupt. interrupt-
Используйте этот атрибут, чтобы указать, что указанная функция является обработчиком прерываний. Компилятор генерирует последовательности входа и выхода функции, подходящие для использования в обработчике прерываний, когда этот атрибут присутствует.
Вы можете передать аргумент атрибуту прерывания, который указывает имя или номер. Если аргумент представляет собой число, то он указывает слот в таблице векторов прерываний (0 - 31), которому должен быть назначен этот обработчик. Если аргумент представляет собой имя, оно обрабатывается как символическое имя слота вектора. Эти имена должны совпадать с соответствующими записями в скрипте линковки. По умолчанию распознаются имена
watchdogдля вектора 26,nmiдля вектора 30 иresetдля вектора 31. naked-
Этот атрибут позволяет компилятору создать необходимое объявление функции, позволяя при этом содержать тело функции код ассемблера. Указанная функция не будет иметь прологов/эпилогов, сгенерированных компилятором. В функциях «naked» безопасно включать только базовые
asmоператоры (см. Basic 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-8.5.0/gcc/MSP430-Function-Attributes.html