fasm. Проблематика вопроса

Тема в разделе "WASM.HEAP", создана пользователем common_up, 13 ноя 2010.

  1. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    Здравствуйте, с недавнего времени начал плотно писать на ассемблере и юзать фасм в качестве компилятора. Да, фасм хорош: макроязык, классный синтаксис, много интересного в общем. Но есть и в этой бочке с мёдом ложка дёгтя, а именно: Много кто кричит до потери пульса о том, что фасм - это труъ, но по видимому мало кто действительно пишет программы, которые чем-то отличаются от хело ворлд. И я обьясню почему: потому, что по сути дела сам компилятор с его синтаксисом - это есть всего лишь база, а база без хидеров == обсолютно бестолковая вещь. Писать в стиле mov eax,[eax+0x80] и потом в комментариях писать о том, что это дескать eax == IMAGE_IMPORT_DESСRIPTOR не есть нормально. Поэтому многие открывая ваши исходники шарахаются от ассемблера как от чего-то страшного и непонятного. Другая сторона вопроса заключается в том, что для того, чтобы работать с чем-то(допустим mysql) нужны хидеры. Притом готовые хидеры, а не те, что выложены на флатассемблер.нет, которые датируются 2003годом и которые по сути дела бестолковые ввиду того, что там хидеры завязаны на макросах, а макросы к хидерам никто не выкладывал. Что я могу сказать: крайне жаль, что никто не занимается фасмом. Если у кого-то есть свои какие-то наработки, то не в коем случае ни с кем ими не делится. А зря. Создали бы в ветке WASM PROJECT топик и поскидывали все инклюды для фасма. Сами по себе инклюды для дятлов бесполезны, а вот для тех, кто хотел бы писать на фасме ой как понадобились бы. Только не надо меня гневить за этот топик, дескать я эмо и должен сам написать туеву хучу инклюдов сам. В принципе с чем работаю - под то и пишу инклюды, а вот недавно пришлось столкнуться с mysql и...и инклюдов днем с огнем не ссыщешь. Может всетаки создадим топик и каждый поделится своими наработками ?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Я пишу на VC++, у меня там все заголовочные файлы есть.
     
  3. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    http://board.flatassembler.net/topic.php?t=5150&start=3
    Вот еще тулза: переводит Си-заголовки в GoAsm, который с Fasm имеют долю общего.
    [​IMG]

    Код (Text):
    1. format pe gui 4.0
    2. include 'win32ax.inc'
    3.  
    4.  
    5. section '' code executable import readable writable
    6.   library gdi32,'gdi32.dll',\
    7.           kernel32,'kernel32.dll',\
    8.           user32,'user32.dll'
    9.  
    10.   include 'api\gdi32.inc'
    11.   include 'api\kernel32.inc'
    12.   include 'api\user32.inc'
    13.  
    14.  
    15. ;  struct CocaCola
    16. ;    shit   dd ?
    17. ;    urine  dd ?
    18. ;    vomit  dd ?
    19. ;    wantme dd ?
    20. ;  ends
    21. ;
    22. ;  entry $
    23. ;      virtual at eax
    24. ;        cc      CocaCola
    25. ;      end virtual
    26. ;        mov     [cc.shit],TRUE
    27. ;        mov     [cc.urine],TRUE
    28. ;        mov     [cc.vomit],TRUE
    29. ;        mov     [cc.wantme],FALSE
    30. ;
    31. ;        invoke  ExitProcess,0
    32.  
    33.  
    34.  
    35.  
    36.   struct CocaCola
    37.     shit   dd ?
    38.     urine  dd ?
    39.     vomit  dd ?
    40.     wantme dd ?
    41.   ends
    42.  
    43.   cc CocaCola FALSE,FALSE,FALSE,TRUE
    44.  
    45.   entry $
    46.         mov     [cc.shit],TRUE
    47.         mov     [cc.urine],TRUE
    48.         mov     [cc.vomit],TRUE
    49.         mov     [cc.wantme],FALSE
    50.  
    51.         invoke  ExitProcess,0
    [​IMG]
     
  4. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    Я етот фрагмент совершенно не понял. Чем именно "хидеры" не устраивают? И что надо изменить, чтобы устраивали.
     
  5. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Упрощение поста #3(в режиме расширенного ответа номера не видны).
    Постив сюда, далее писал: http://board.flatassembler.net/topic.php?t=12204
    метод virtual не так удобен:
    Код (Text):
    1. virtual at eax
    2.   structure1 STRUCTURE
    3. end virtual
    поскольку дальнейшая попытка изменить базу адресации приведет к "имя уже определено":
    Код (Text):
    1. virtual at ebx
    2.   structure1 STRUCTURE
    3. end virtual
    избежать можно выдумывая новое имя, но так вовсе не очень:
    Код (Text):
    1. virtual at eax
    2.   structure1a STRUCTURE
    3. end virtual
    помним об масивах, где нужна относительная адресация поля:
    Код (Text):
    1. struct STRUCTURE
    2.   f1 db ?
    3.   f2 db ?
    4. ends
    5. structure1 STRUCTURE
    6. mov eax,[eax+structure1.f1-structure1]
    то был не лучьший способ, потому *.inc, отвечающий за структуры, следовало б обновить
    Код (Text):
    1. mov eax,[eax+structure1.rel.f1] ;примерно
    Дали ответ: http://board.flatassembler.net/topic.php?t=12204&start=1
    Ну, за ту тулзочку, си-хидеры, и...
    Поспать не забывайте.
     
  6. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
    edemko
    virtual не надо изпользовать для етих целей.
    Я бы написал вот так:

    Код (Text):
    1. struct STRUCTURE
    2.   f1 db ?
    3.   f2 db ?
    4. ends
    5. movzx eax,[eax+STRUCTURE.f1]
    6. movsx ecx, [ebx+STRUCTURE.f2]
    И код читается легче и проблемы меньше.
     
  7. AsmGuru62

    AsmGuru62 Member

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

    Ну вообще-то работают, Я например, пишу IDE только для FASM. Даже с ООП и редактором форм. Когда готово будет - не могу сказать - пишу на FASM-е. :) Но это похоже будет финальный вариант - я начинал несколько раз, но потом бросал.
     
  8. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    Пилять, ну и где же Вы были пол года назад с этой тузлой ?:)