Касательно FASM/

Тема в разделе "WASM.ASSEMBLER", создана пользователем james_bond, 14 ноя 2004.

  1. Asterix

    Asterix New Member

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

    Советую TRW2000 полную версию естно, но он только под win98.
     
  2. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133
    Блин как все сложно! Я уже под конец запутался с чего начинать!
     
  3. IceStudent

    IceStudent Active Member

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



    Это очень хорошее и функциональное IDE для написания приложений на ассемблере.



    С пакетом распространяются настройки для 5 разных компиляторов. Как что-то найти в нём? Да просто посмотрите и разберитесь во всех командах его меню. На сайте RadASM'a лежит также довольно неплохая справка.
     
  4. Rohan

    Rohan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2004
    Сообщения:
    133
    Я понимаю что нужно просто полазить по менюнкам, но мне стремно менять там все что мне кажется не так! Всеж это не в Винде пару галочек поставить. Если несложно то просто назовите мне раздел где смотреть.
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Asterix

    А эта переменная разве объявлена в стеке?

    Похоже на объявление в секции кода - а это ухудшает производительность.

    Хорошо бы иметь в FASM простую поддержку на уровне компилятора:
    Код (Text):
    1.  
    2. proc foo
    3. vars {
    4.   .object WNDCLASS
    5. }
    6. ...
    7. mov .object.pfnWndProc, eax
    8. ...
    9. return
    10.  
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Пример Asterix использует стековые переменные, реальзуется всё это макросами.

    IMHO если же будет поддержка на уровне компилятора, то возможности ухудьшатся - потеряется гибкость.. В MASM например нельзя из-за этого по-нормальному реализовать ESP-based stackframes :-\
     
  7. Johnikum

    Johnikum Member

    Публикаций:
    0
    Регистрация:
    6 июн 2003
    Сообщения:
    97
    S_T_A_S_

    В MASM например нельзя из-за этого по-нормальному реализовать ESP-based stackframes



    Хотя это и не выглядит так элегантно, как в fasm'е, но реализовать можно и в MASM'e.
     
  8. Asterix

    Asterix New Member

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

    > А эта переменная разве объявлена в стеке?



    Да, всё что между proc и enter стековые переменные





    ЗЫ: Как там дела с IDE? Уже хотелось бы затестить.
     
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Johnikum



    Дык я не спорю, сам пытался. Но в MASM это очень криво получается :)

    Все его HLL прибомбасы (proc, invoke) при этом только мешают.



    Ключевой момент - в FASM можно сделать макросы push и pop, которые берут на себя рутину вычислений значения ESP.

    А в MASM - только ручками. Тогда зачем там PROC, LOCAL и т.п.
     
  10. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    А оно сильно надо? Какие при этом преимущества? Лишний регистр освобождается, что еще? Я лично этим этим года полтора назад воспользовался один раз из-за лени, когда над AES работал.



    Если уже так хочется извращаться, то пишем что-то типа blabla equ [esp+4*5]
     
  11. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Иногда - надо, иногда можно и обойтись - тут от прграммы больше зависит.

    Регистр очень часто вовсе не лишний, скорость выше, иногда даже код более компактный (как это ни странно на первый взгляд - не стОит забывать, что winAPI не изменяет EBP)

    Но дело-то не в этом - использование BP - это необходимость времён ДОСа и 286 процессора, сейчас уже на дворе 2005 год почти :)



    А blabla equ [esp+4*5] - это уж точно изврат, так ошибок не оберёшся, особенно когда добавляешь новые команды и т.п.

    Это ладно, если нужно делать mov eax,[blabla] а если push [blabla] или pop [blabla] ?



    В том-то вся прелесть FASM, что сделав один раз макросы (или взять уже готовые), можно потом просто писать программы не напрягаясь считая параметры и локальные переменные.





    А извращаться тогда уж так:

    mov esi,esp

    lodsd

    xchg ecx,eax

    lodsd

    xchg edx,eax
     
  12. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    А в чем проблема? Все работает.





    как и асм :) вон люди щас на дотНЕТ пишут :)
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    masquer >




    Тут фишка в том, что push и pop меняют значения esp, причём важно, до или после выполнения команды эти изменения делаются. В общем-то, решение элементарно, но все макросы, которые я видел были не корректны. А правильно так:


    Код (Text):
    1.  
    2. macro   push     arg
    3. {
    4.     push    arg
    5.     __STACK__=__STACK__-4
    6. }
    7.  
    8. macro   pop  arg
    9. {
    10.     __STACK__=__STACK__+4
    11.     pop arg
    12. }






    >




    Ну вот, началась агитация :) Я имел ввиду то, что 16 битные x86 просто не имели возможности адресовать память через SP, сейчас же с этим проблем нет. но микрософт вместо новых фич добавляет в MASM новые баги.
     
  14. Asterix

    Asterix New Member

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

    Ты хочешь сказать что при применении макросов можно полностью расслабиться, косяк невозможен?
     
  15. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Да, только сами макросы не должны содержать косяков :)
     
  16. tylerdurden

    tylerdurden New Member

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


    А причем тут Микрософт ? :) Я думал MASM щас пишет какой-то там huch (или как его ?)
     
  17. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Много кто так думает, но Хатч - это просто распространитель
     
  18. The Svin

    The Svin New Member

    Публикаций:
    0
    Регистрация:
    6 июл 2003
    Сообщения:
    665
    Адрес:
    Russia


    Дык их можно отключать по мере надобности.

    FORCENOFRAME

    OPTION PROLOGUE:NONE

    OPTION EPILOGUE:NONE
     
  19. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Это же писанины в 2 раза больше, чем в fasm получится =)

    А вот ещё один гвоздь в крышку гроба masm ;)