Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Локальные метки только в макросах?
А в основном теле программы?
А в основном теле программы?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Как известно при подаче питания, или после сброса аппаратно производится инициализация РВВ начальными значениями ( большая часть - нулём). Ваше мнение: нужно ли при конфигурации портов ВВ, записывать нули туда, где вроде-бы уже должен быть ноль? Например, если произошел сбой в программе и был осуществлён сброс по собачьему таймеру, или по коричневому детектору. (ATmega, ATtiny)
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Это как? Что Вы имеете ввиду?trofim2 писал(а): в основном теле программы?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я имею ввиду не в макросах.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Объясните что Вы имеете ввиду под локальной меткой в основном теле. Как Вы хотите ее применять?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Область действия локальных меток ограничена глобальными метками.
Пример:
Label_1:
.......
@@1:
.......
Label_2:
.......
@@1:
........
Label_3:
Т.е. первая локальная метка @@1 действительна только в зоне между Label_1 и Label_2,
вторая - между Label_2 и Label_3 .
За пределами до Label_1 и после Label_3 метки с именем @@1 не существует.
"@@" - признак локальной метки.
Пример:
Label_1:
.......
@@1:
.......
Label_2:
.......
@@1:
........
Label_3:
Т.е. первая локальная метка @@1 действительна только в зоне между Label_1 и Label_2,
вторая - между Label_2 и Label_3 .
За пределами до Label_1 и после Label_3 метки с именем @@1 не существует.
"@@" - признак локальной метки.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
А какая необходимость этого?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Нет необходимости писать длинные метки в процедурах и библиотеках.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Теперь поясните что есть длинная метка?
- Starichok51
- Модератор
- Сообщения: 19044
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
у каждой метки должно быть осмысленное имя, по которому понятно, что под ней делается.trofim2 писал(а):Нет необходимости писать длинные метки
а такая запись
@@1:
ничего осмысленного не несет, и через некоторое время и сам забудешь, что под этой меткой делается....
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Во многих случаях локальные метки оправданы.
К примеру конструкция
"rjmp PC+смещение"
заменяется на
rjmp @@1
..........
@@1:
........
и позволяет вставлять/удалять команды не заботясь о смещении.
К примеру конструкция
"rjmp PC+смещение"
заменяется на
rjmp @@1
..........
@@1:
........
и позволяет вставлять/удалять команды не заботясь о смещении.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Именно для этого метки и придуманы, чтобы не заботится. Я так понимаю, что Вам влом менять имена меток, когда копируете код, ну для этого как раз макросы и существуют. Думаю другого способа нет.trofim2 писал(а):и позволяет вставлять/удалять команды не заботясь о смещении.
- Andrew Martin
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Вт июн 25, 2013 18:45:07
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Польза от локальных меток неоспорима, поскольку в пределах проекта может существовать сколько угодно локальных меток с одинаковыми именами. Это позволяет не нагромождать длинные имена меток. И потом не приходится заморачиваться с именами при копипасте. Очень удобно для ближних меток.
Вот простой пример взятия модуля числа. Такая конструкция может быть использована без каких-либо переделок в любом числе функций одного и того же проекта.
Код: Выделить всё
funcname_1:
cpi r16,0
brge @@1
neg r16
@@1:
funcname_2:
cpi r16,0
brge @@1
neg r16
@@1:
Вот простой пример взятия модуля числа. Такая конструкция может быть использована без каких-либо переделок в любом числе функций одного и того же проекта.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ваш пример рабочий? Как компилятор узнает зону ответственности метки?
Для Вашего примера любой доктор пропишет макрос.
Для Вашего примера любой доктор пропишет макрос.
- ptr128
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Чт окт 06, 2016 21:12:07
- Откуда: Южное Бутово
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Andrew Martin писал(а):Польза от локальных меток неоспорима, поскольку в пределах проекта может существовать сколько угодно локальных меток с одинаковыми именами. Это позволяет не нагромождать длинные имена меток.
То же самое достижимо, если не пытаться впихнуть весь проект в один файл исходного кода. Если у Вас каждый файл исходного кода содержит только один функциональный блок кода, длиной не более, чем в сотню строк, то и проблем с метками у Вас не будет. Дайте возможность компоновщику потрудиться )
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Так компоновщика нет.
- ptr128
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Чт окт 06, 2016 21:12:07
- Откуда: Южное Бутово
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну так используйте для AVR GNU Toolchain. Там компоновщик точно есть.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Сколько пробовал, ничего не получается.
Нет сенсея, чтобы на пальцах показал, как им пользоваться.
Нет сенсея, чтобы на пальцах показал, как им пользоваться.
- ptr128
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Чт окт 06, 2016 21:12:07
- Откуда: Южное Бутово
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну не знаю. Под Eclipse для включения в проект ассемблера в *.S файлах, вообще никаких дополнителых телодвижений не требуется, кроме изначальной настройки CDT и AVR Eclipse Plugin.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я же просил на пальцах.
