Осторожно с MACRO и @@

Тема в разделе "WASM.ASSEMBLER", создана пользователем lotte, 10 дек 2004.

  1. lotte

    lotte New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2004
    Сообщения:
    4
    Напоролся на очевидную ошибку и подумал, что неплохо было бы таким как я новичкам, на это не напарываться. :)

    Короче.

    Если в одном MACRO написать:



    TESTME MACRO

    @@:

    ...some code

    ENDM



    А потом вызвать этот макрос вот так:



    @@:

    TESTME

    jmp @B



    то JMP @B перепрыгнет не на ту метку, а попадет внутрь макроса.



    Почему бы MASM компилятору не присваивать таким меткам уникальные имена, чтобы таких проблем не было?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    lotte

    Почему бы этого не делать кодеру?



    Кстати, раз уж появился такой топик, то с макросами всегда нужно очень осторожно обращяться и желательно в профилактических целях просить кимпилятор генерировать листинг (макросы при этом разворачиваются препроцессором) и изучать уже этот листинг на предмет ошибок.
     
  3. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Вроде бы так можно:
    Код (Text):
    1.  
    2. TESTME MACRO
    3. LOCAL FOO
    4. FOO:
    5. ...some code
    6. ENDM


    Microsoft Macro Assembler Reference :
     
  4. lotte

    lotte New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2004
    Сообщения:
    4
    S_T_A_S_,

    угу, так и надо.