FASM - Что значит @ (сабака) в операторе Jump ?

Тема в разделе "WASM.BEGINNERS", создана пользователем gershkovich, 4 авг 2006.

  1. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Изучаю чужие исходники и часто встречаю такую запись :
    Код (Text):
    1. jnz @label
    Перед меткой стоит знак '@' , а иногда даже два.
    Чтобы это значило ?

    В документе (который вместе с FASM) я не нашел.
    Плохо искал ?

    Заранее спасибо.
     
  2. BioMehanik

    BioMehanik New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2006
    Сообщения:
    101
    НИ-ЧЕ-ГО не значит.. )) Собака-это часть имени метки.. )

    @Metka:
    jmp Metka

    Так работать не будет, поскольку Metka не сущ. Есть только @Metka.

    Короче собака в @Metka тоже самое, что и "М", "Е", "Т", "К" и т.д
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    А разве @ не означает локальную метку, доступную только внутри функции. imho, встречал такое определение в описании какого-то ассемблера...
     
  4. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    BioMehanik, у меня прекрасно работает и без '@'

    rmn, похоже на правду!
    Если с @ то можно объявлять метки с одинаковыми именами в разных проц-ах
    иначе компилятор ругается "name already exists"
     
  5. BioMehanik

    BioMehanik New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2006
    Сообщения:
    101
    Похоже, что так оно и есть... Вот это я лоханулся...
     
  6. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    FASM.pdf/Assembly syntax/Constant and lables:
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    gershkovich
    Сначала читаешь мануал фасма, выдержку из которого привёл nobodyzzz.

    Кратко:
    label1: обычная глобальная метка
    .label2: локальная метка, можно обращаться к ней в промежутке от label1: до следующей глобальной метки просто по имени: jmp .label, вне этого промежутка как label1.label2
    ..label3: глобальная метка, не затрагивающая область видимости локальных - поэтому используется в макросах:
    Код (Text):
    1. call label1
    2. macro delay {
    3.   local ..l
    4.   or ecx,0xFFFFFFFF
    5. ..l:
    6.   loop ..l
    7. }
    8.  
    9. label4:
    10. jmp  label1.label2
    11.  
    12. label1:
    13. delay
    14. .label2:
    А на твой вопрос ответил правильно BioMehanik.

    rmn
    Это у масма, читайте его справку.