Блоки .IF в FASM

Тема в разделе "WASM.ASSEMBLER", создана пользователем Vasil, 7 май 2006.

  1. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка




    это где то проскакивало на форуме фасма. Ща найду...



    http://board.flatassembler.net/topic.php?t=5162&start=0

    Since so many important fixes and additions have already been done in 1.65 development line, I'm going to make it soon into another milestone releases (1.66). This moves the official fasm's own debug info format outputting to be no earlier than 1.68 milestone, same goes for the x86 Mac support.



    Anyway, what I tried to say here (since about Mach-O and debug info plans you could read already in other threads), making 1.65.x into a new milestone soon is mainly because the development of those new features are sustained and will stay this way at least for month (if not more), and I don't want to leave all those imporant fixes to be still only "development" version for all this time



    в бщем, если бы не некоторые баги фасма, которые Томасу надо исправлять, а также документация., которую надо дописывать, Мас версия уже была бы. Но не всё сразу...



    Если интересно, то на форум фасма, и вопрос к Томасу, или письмом. Он отвечает всегда, когда есть время.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    действительно, несколько push и call вместо invoke

    и несколько cmp/je test/jz вместо .IF/.ENDIF покажут

    мощь ассемблера :derisive:))



    макросы нужно использовать везде где это возможно

    и не использовать там где это не нужно, только и всего
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Макросы условных переходов иногда маскируют направления переходов. Для правильной оптимизации неплохо знать куда идёт условный переход: назад, вперёд или проваливается на следующую инструкцию. Предпочитаю не использовать .IF, .ELSE и т.п.
     
  4. Quantum

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

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

    А, ну это я читал. Думал, что есть более конкретное описание как фасм портируется в мак. Мне самому нужно кое-что портировать и наработки привалова в этом плане могут сэкономить время и деньги. Подождём-с.
     
  5. Nata

    Nata New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2006
    Сообщения:
    41
    AsmGuru62

    Так для этого отладчмк существует!Один раз достаточьно посмотреть
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Nata

    > "Один раз достаточьно посмотреть"

    Вот именно, и увидев в масмовском .IF инструкцию OR вместо положенного TEST - больше не связываться с выкрутасами этих "доморощенных оптимизаторов" :)) Про левые либы, я уж вообще молчу...
     
  7. Quantum

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

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



    Фасм оптимизирует ещё круче: cmp reg32,0 :)
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Quantum

    Это не оптимизация, это её отсутствие. Никто не запрещает сделать проверку на 0 и вставить соответствующую инструкцию вместо cmp.
     
  9. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка




    там есть оптимизация, только тогда надо писать:

    .if eax - оптимизированый вариант.

    .if eax = 0 - неоптимизированый.
     
  10. dinoweb

    dinoweb Дмитрий

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    129
    Адрес:
    Россия. Красноярск
    Asterix

    invoke - это простой макрос, потомучто я точно знаю, как будет выглядеть конечный код, а запись типа .if((a>='0' && a<='9') || (a>'a' && a<'f')) можно реализовать по разному. И компилятор может выбрать далеко не тот вариант, который больше подходит по ситуации, и я не буду заранее знать сколько байт занимает готовый код.
     
  11. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    dinoweb

    запись вида


    - макрос тоже, и посмотрев его, становиться пределно ясно, как это будет скомпилировано.(топик то о фасме)