Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Уникальная метка в макросе
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
syuha
MCU: CC1110
Среда: IAR for 8051 v7.60

Если макрос содержит метки, и используется в тексте основной программы несколько раз, то метки перестают быть уникальными.
Есть ли специальный символ, который при трансляции делает имя метки уникальным?

В HC(S)08 этот символ \@:
Код
M_SetCRC:      MACRO
               ldhx      Temp_1
\@SetCRC
               mov      X+,Temp_2
               cphx     Temp_3
               bne      \@SetCRC
               ENDM


Каспер пишет что таким символом является # в конце имени метки, но IAR ругается - "Bad instruction"
ut1wpr
Цитата(syuha @ Oct 20 2011, 20:37) *
MCU: CC1110
Среда: IAR for 8051 v7.60

Если макрос содержит метки, и используется в тексте основной программы несколько раз, то метки перестают быть уникальными.
Есть ли специальный символ, который при трансляции делает имя метки уникальным?

В HC(S)08 этот символ \@:
Код
M_SetCRC:      MACRO
               ldhx      Temp_1
\@SetCRC
               mov      X+,Temp_2
               cphx     Temp_3
               bne      \@SetCRC
               ENDM


Каспер пишет что таким символом является # в конце имени метки, но IAR ругается - "Bad instruction"
В порядочных ( sm.gif ) ассемблерах было определение local, за которым следовало перечисление имен меток, примененных в данном макросе, как локальные.
Компилятор сам присваивал им уникальные имена путем добавления собственного спецсимвола, применяя его мультиплицирование.
Код
example macro
local label1,label2
...
label1:    
...
    jmp label1
...
    jmp    label2
...
label2:
...
    endm

В Вашем случае надо смотреть доку на ваш компилятор.




syuha
Спасибо, LOCAL работает!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.