WinAVR. Использование инструментов GNU #02. Опции ассемблера avr-as

Платформозависимые опции ассемблера

-mmcu=архитектура
-mmcu=типМК
avr-as не понимает как avr-gcc вышеупомянутые опции -mmcu=. По умолчанию принимается архитектура avr2, но это может быть изменено использованием соответствующей псевдоинструкцией .arch внутри исходного ассемблерного файла.
-mall-opcodes
Выключает проверку кодов операций для текущего типа МК, и позволяет ассемблировать любые возможные для AVR коды операций.
-mno-skip-bug
Не выдаёт предупреждений при попытке пропуска команд из двух слов с помощью команд CPSE/SBIC/SBIS/SBRC/SBRS. Ранние AVR микроконтроллеры страдали от аппаратной ошибки, из-за которой эти команды не могли быть пропущены должным образом.
-mno-wrap
Для команд RJMP/RCALL, не разрешает целевой адрес для относительного перехода для контроллеров, у которых более 8 кбайт памяти.
--gstabs
Создаёт отладочные символы .stabs для исходных ассемблерных строк. Это включает avr-gdb для отслеживания по исходным ассемблерным строкам. Эту опцию нельзя использовать, когда ассемблируются исходники, которые созданы Си компилятором; эти файлы уже содержат соответствующую построчную информацию из исходных Си файлов.
-a[cdhlmns=file]
Включает ассемблерный листинг. Субопции:
  • c пропускает ложные условные операторы;
  • d пропускает отладочные директивы;
  • h включает исходники высокого уровня;
  • l включает скомпонованные блоки;
  • m включает развертывания макросов;
  • n пропускает обработку выражений;
  • s включает символы;
  • =file устанавливает имя файла листинга.

Различные субопции могут объединяться в список одной опции -a; в этом случае =file должна быть в нём последней.

Примеры опций ассемблера, переданных через Си компилятор

Помните, что опции ассемблера могут быть переданы из препроцессора Си компилятора, используя -Wa (смотрите страницу 1 данного раздела). Так, чтобы правильно включить исходный код на Си в ассемблерный листинг в файл foo.lst при компиляции foo.c, может быть использована следующая командная строка компилятора:

$ avr-gcc -c -O foo.c -o foo.o -Wa,-ahls=foo.lst

Чтобы правильно передать ассемблерный файл через препроцессор Си, и ассемблер сформировал построчную отладочную информацию для него, может быть использована следующая командная строка:

$ avr-gcc -c -x assembler-with-cpp -o foo.o foo.S -Wa,--gstabs

Заметьте, что в Unix-системах, у которых файловые системы различают регистр клавиатуры, точно заданное имя файла с расширением .S (заглавная буква S) заставляет компилятор автоматически принимать -x assembler-with-cpp, хотя использование .s передаст файл прямо ассемблеру без предварительной обработки.

Перевод раздела Using the GNU tools из AVR Libc v.1.6.6

Теги

AVRavr-gccMCUWinAVRАссемблерКомпиляторМикроконтроллер