loo:pop eax / jmp loo

Тема в разделе "WASM.ASSEMBLER", создана пользователем GoldFinch, 23 сен 2008.

  1. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Думаю все замечали такую особенность асма, что в нем каждая инструкция должна начинаться с новой строчки. В коде это еще ничего, а вот на форуме например, чтоб пост был покомпактнее, инструкции записывают в одну строчку, разделяя слешем:
    loo:pop eax / jmp loo
    А в коде это будет писаться так
    loo:pop eax
    jmp loo

    Но это при копировании надо слеши удалять, или наоборот вставлять, да и вообще, строчек много. Вобщем мне это надоело и я написал макрос (под fasm) который позволяет записывать инструкции (и не только) в одну строчку:
    INLINE instr1 / instr2 / ... / instrN
    Код (Text):
    1. macro INLINE [line] {common
    2.       local ..op
    3.       ..op equ /
    4.       irps symbol,line \{
    5.            match /,symbol \\{
    6.                  match /foo,..op \\\{foo\\\}
    7.                  ..op equ  \\}
    8.            ..op equ ..op symbol \}
    9.       match /foo,..op \{foo\} }
    10. ;test:
    11. INLINE use32 / loo:pop eax / jmp loo
    Изначально я назвал макрос "INLINE", но чтобы не печатать так много букв, его можно назвать например "!":
    macro ! [line] {common
    ...
    ! loo:pop eax / jmp loo

    Неисключено, что макрос можно улучшить, может быть в нем есть баги.
    Алсо не исключаю что тема боян, хотя если и так, странно что такой макрос малоизвестен.

    Подозреваю, что скоро появятся однострочные аналоги if и других многострочных инструкций.
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.229
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775