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 передаст файл прямо ассемблеру без предварительной обработки.