реклама на сайте
подробности

 
 
> Абсолютный и относительный переход из макроса.
Alt.F4
сообщение Aug 27 2011, 19:47
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Добрый день.
Где можно прочесть про переходы из макросов?
Недавно наткнулся на форум, где писали, что абсолютный переход не работает в макросе. Раньше никогда о таком не слышал.
Спасибо.
З.Ы.
абсолютный - call, jmp (PC -> k)
относительный - rcall, rjmp (PC -> PC+k)

Сообщение отредактировал Alt.F4 - Aug 28 2011, 06:47
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xemul
сообщение Aug 28 2011, 15:31
Сообщение #2



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Alt.F4 @ Aug 28 2011, 17:40) *
Что имел ввиду товарищ GP1 во втором посте?

Дык именно это. Приличный ассемблер при неоднократном использовании такого макроса (с абсолютной меткой внутри себя) должен выругаться на переопределение метки.
Ниже ARV показал, как метки посредством $ превращаются в локальные, и дальше уж ассемблер сообразит.
(могу предположить, что директивы local/global avrasm'ом тоже поддерживаются)

Цитата(MiklPolikov @ Aug 28 2011, 13:49) *
Например в MPLAB . Или я просто не знаю как там делать локальные метки в макросе. Поэтому вместо макроса с метками использую функцию, к которой перехожу командой CALL а возвращаюсь на место RETLW

Лет сто не пользовался mpasm'ом, удивился, посмотрел - ничего не изменилось:
hlpMPASMAsm.chm -> Directives -> local
Код
local_label MACRO
      local    L1, L2
      goto     L1
L1
      goto     L2
L2
      endm

      ORG  0x0000

      local_label    ; метки будут развёрнуты в _1L1, _1L2
      local_label    ; метки будут развёрнуты в _2L1, _2L2
      local_label    ; метки будут развёрнуты в _3L1, _3L2
      end
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 01:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01352 секунд с 7
ELECTRONIX ©2004-2016