Страница 295 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 14:39:47
ARV
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 15:14:54
trofim2
У нас, в этой теме, речь идёт про ассемблер.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 15:31:48
ptr128
И по ссылке тоже про ассемблер
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 15:47:51
trofim2
Так там малюпасенький кусочек на асм, а всё на С, а мне надо всё на АСМ.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:02:36
ptr128
Если выкинуть все про C, а оставить только про ассемблер, то это и будет то, что Вы хотели.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:04:24
trofim2
Но как это запустить на трансляцию?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:06:59
ptr128
Сказано же. Если GCC на вход дать файл с расширением *.s, то он сам натравит на него GNU макроассемблер.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:12:28
trofim2
Как ему это дать?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:17:05
ptr128
Любым IDE поддерживающим AVR GNU toolchain. Или руками из командной строки. Или GNU make.
Если Вы хотите подключить к конкретному IDE, то смотрите, как к нему подключить GNU toolchain.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:29:58
trofim2
В простейшем случае беру любой файл с расширением .asm, переименовываю на .s и запускаю командную строку. Должен получить файлы .hex (2 штуки) и .lst.
Какая будет командная строка lля запуска трансляции?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 16:47:32
ptr128
Нет, GCC на выходе даст или объектный файл или, по-умолчанию, elf. Из elf hex еще надо будет делать, при помощи avr-objcopy. Если Вы не готовы изучать GNU toolchain, воспользуйтесь готовым IDE, которое все сделает за Вас, даже вызов avrdude для заливки прошивки.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 17:11:41
trofim2
Да я не готов изучать GNU toolchain и не знаю, что такое IDE.
Подскажите:
1. Какая командная строка для получения .elf?
2. Какая для преобразования elf в .hex (2 штуки) и .lst?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 17:24:08
ptr128
1. avr-gcc xxxx.s
2. avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex xxxx.elf "xxxx.hex"
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 17:49:01
trofim2
Выдает кучу ошибок, начиная с м128def.inc.
Надо что-то другое?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 17:51:24
ptr128
Ассемблерный исходник должен иметь расширение "s"
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 18:04:11
trofim2
Это я понял.
в файле строка
.include "m128def.inc"
и в нем выдает ошибки
почему-то строка "avr-gcc Test.S > Err.txt" не скидывает ошибки в файл.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 18:17:12
ptr128
Во-первых, я без понятия, что за ошибки он выдает. Может m128def.inc не находит.
Во-вторых, Вы перенаправляете в файл stdout, ошибки выводятся в stderr, который вы не перенаправляете в файл
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 18:36:11
trofim2
Похоже у него несколько другой синтаксис.
m128def.inc находит, в нем выдает ошибки.
Не признает "cseg".
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 18:57:43
ptr128
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 19:52:22
Andrew Martin
Z_h_e писал(а):Ваш пример рабочий? Как компилятор узнает зону ответственности метки?
Это просто показательный пример, чтобы была ясна идеология локальных меток.
На avrasm-е никогда не пользовался локальными метками, за то в fasm-е и fasmarm постоянно. Там вот такие конструкции с локальными метками:
Код: Выделить всё
procname1:
cmp r0,0
bge .label1
blt .label2
.label1:
.label2:
procname2:
cmp r0,0
bge .label1
blt .label2
.label1:
.label2:
преобразуется препроцессором в:
Код: Выделить всё
cmp r0,0
bge procname1.label1
blt procname1.label2
cmp r0,0
bge procname2.label1
blt procname2.label2
Зона корректности локальной метки вида .label1 - после глобальной метки и до следующей глобальной метки.
P.S.: Сейчас очень активно развивается проект fasmg, там на мощнейший препроцессорный скелет можно навесить надстройки практически для любых МК. Для AVR уже есть
Добавлено after 20 minutes 7 seconds:
ptr128 писал(а): Дайте возможность компоновщику потрудиться )
Никогда не нравилась возня с объектниками и компоновкой. Делаю так только на x86 и то на относительно больших проектах. Не каждый ассемблер умеет генерить отладочную информацию в формате, поддерживаемом линкером, а отладка на уровне исходного кода очень удобна. Например, идеология fasm не предусматривает компоновку, поэтому он умеет генерить сразу исполняемые файлы многих форматов, хоть и объектники тоже поддерживает.