Страница 294 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 14:26:36
trofim2
Локальные метки только в макросах?
А в основном теле программы?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 16:13:21
dimmer
Как известно при подаче питания, или после сброса аппаратно производится инициализация РВВ начальными значениями ( большая часть - нулём). Ваше мнение: нужно ли при конфигурации портов ВВ, записывать нули туда, где вроде-бы уже должен быть ноль? Например, если произошел сбой в программе и был осуществлён сброс по собачьему таймеру, или по коричневому детектору. (ATmega, ATtiny)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 16:15:42
Z_h_e
trofim2 писал(а): в основном теле программы?
Это как? Что Вы имеете ввиду?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 16:36:03
trofim2
Я имею ввиду не в макросах.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 16:39:16
Z_h_e
Объясните что Вы имеете ввиду под локальной меткой в основном теле. Как Вы хотите ее применять?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 16:49:08
trofim2
Область действия локальных меток ограничена глобальными метками.
Пример:
Label_1:
.......
@@1:
.......
Label_2:
.......
@@1:
........
Label_3:
Т.е. первая локальная метка @@1 действительна только в зоне между Label_1 и Label_2,
вторая - между Label_2 и Label_3 .
За пределами до Label_1 и после Label_3 метки с именем @@1 не существует.
"@@" - признак локальной метки.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 16:54:14
Z_h_e
А какая необходимость этого?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 17:05:50
trofim2
Нет необходимости писать длинные метки в процедурах и библиотеках.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 18:05:06
Z_h_e
Теперь поясните что есть длинная метка?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт ноя 24, 2016 19:27:25
Starichok51
trofim2 писал(а):Нет необходимости писать длинные метки
у каждой метки должно быть осмысленное имя, по которому понятно, что под ней делается.
а такая запись
@@1:
ничего осмысленного не несет, и через некоторое время и сам забудешь, что под этой меткой делается....
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 06:36:49
trofim2
Во многих случаях локальные метки оправданы.
К примеру конструкция
"rjmp PC+смещение"
заменяется на
rjmp @@1
..........
@@1:
........
и позволяет вставлять/удалять команды не заботясь о смещении.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 08:02:59
Z_h_e
trofim2 писал(а):и позволяет вставлять/удалять команды не заботясь о смещении.
Именно для этого метки и придуманы, чтобы не заботится. Я так понимаю, что Вам влом менять имена меток, когда копируете код, ну для этого как раз макросы и существуют. Думаю другого способа нет.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 10:10:16
Andrew Martin
Польза от локальных меток неоспорима, поскольку в пределах проекта может существовать сколько угодно локальных меток с одинаковыми именами. Это позволяет не нагромождать длинные имена меток. И потом не приходится заморачиваться с именами при копипасте. Очень удобно для ближних меток.
Код: Выделить всё
funcname_1:
cpi r16,0
brge @@1
neg r16
@@1:
funcname_2:
cpi r16,0
brge @@1
neg r16
@@1:
Вот простой пример взятия модуля числа. Такая конструкция может быть использована без каких-либо переделок в любом числе функций одного и того же проекта.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 11:59:34
Z_h_e
Ваш пример рабочий? Как компилятор узнает зону ответственности метки?
Для Вашего примера любой доктор пропишет макрос.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 12:09:01
ptr128
Andrew Martin писал(а):Польза от локальных меток неоспорима, поскольку в пределах проекта может существовать сколько угодно локальных меток с одинаковыми именами. Это позволяет не нагромождать длинные имена меток.
То же самое достижимо, если не пытаться впихнуть весь проект в один файл исходного кода. Если у Вас каждый файл исходного кода содержит только один функциональный блок кода, длиной не более, чем в сотню строк, то и проблем с метками у Вас не будет. Дайте возможность компоновщику потрудиться )
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 12:17:04
trofim2
Так компоновщика нет.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 13:01:12
ptr128
Ну так используйте для AVR GNU Toolchain. Там компоновщик точно есть.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 13:21:47
trofim2
Сколько пробовал, ничего не получается.
Нет сенсея, чтобы на пальцах показал, как им пользоваться.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 13:57:41
ptr128
Ну не знаю. Под Eclipse для включения в проект ассемблера в *.S файлах, вообще никаких дополнителых телодвижений не требуется, кроме изначальной настройки CDT и AVR Eclipse Plugin.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт ноя 25, 2016 14:30:09
trofim2
Я же просил на пальцах.