Альтернативный высокоуровневый синтаксис в MASM 32

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

  1. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Макросы поддерживают дополнительные флаги процессора (CARRY?, OVERFLOW?, PARITY?, SIGN?, ZERO?, EQUAL?, ABOVE?, ABOVE?||EQUAL?, BELOW?, BELOW?||EQUAL?, GREATER?, GREATER?||EQUAL?, LESS?, LESS?||EQUAL?, NOCARRY?, NOOVERFLOW?, NOPARITY?, NOSIGN?, NOZERO?, NOEQUAL?, NOABOVE?,
    NOBELOW?, NOGREATER?, NOLESS?).
    И позволяют использовать дополнительные команды для вычисления условий.
    Например:
    ; @IF <<or EDX, EDX>>, SIGN? ; регистр EDX < 0
    ; ...
    ; @ELSEIF <<mov EAX, [iVAR_1]>>, <<cmp EAX, [iVAR_2]>>, GREATER?||EQUAL? ; iVAR_1 >= iVAR_2 (с учётом знака)
    ; ...
    ; @ELSEIF FLD [qVAR_3], FICOMP [iVAR_2], FSTSW AX, SAHF, ABOVE?||EQUAL? ; qVAR_3 >= iVAR_2 (с учётом знака!)
    ; ... ; ВНИМАНИЕ: при FPU сравнениях использовать только БЕЗЗНАКОВЫЕ флаги (ABOVE?, BELOW?)
    ; ... ; хотя FPU сравнение ВСЕГДА учитывает знак !!!
    ; @ENDIF
    ; Примечание в << >> обязательно заключать только команды, содержащие запятые (например: <<mov EAX, 5>>)
    ; - - - - - - - - - -
    ; mov ECX, 15
    ; @REPEAT
    ; ...
    ; @BREAK @IF <<cmp EAX, -5>>, LESS? || EQUAL? ; досрочный выход если EAX <= -5
    ; ...
    ; cmp [iVAR_1], 10
    ; @UNTILCXZ ABOVE?||EQUAL? ; выход из цикла если [iVAR_1] >= 10 (unsigned) или ECX == 0

    Еще есть возможность определять и разопределять локальные метки в любом месте программы - очень полезная вещь для самостоятельного построения таких конструкций как @IF ... @ELSEIF ... @ENDIF и т.д.
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    а еще есть индивидумы, к-рые из си делают паскаль %)
     
  3. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    censored
    В улыбись зайдите! Там ПРЕВЕД_язык изобрели давно! Что-то вроде:
    #define RESPEST_STRING ...
    #define PREVED ...

    и т.д.

    А чем вообще Фасм не нравится? Зайдите в исходники, все что связанное с фасмом(проекты) качните и вы увидете это действительно гибкий и мощный инструмент!
     
  4. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    preved eto bayan, ninche modno virtual machines on kolenyax :))