Здравствуйте, с недавнего времени начал плотно писать на ассемблере и юзать фасм в качестве компилятора. Да, фасм хорош: макроязык, классный синтаксис, много интересного в общем. Но есть и в этой бочке с мёдом ложка дёгтя, а именно: Много кто кричит до потери пульса о том, что фасм - это труъ, но по видимому мало кто действительно пишет программы, которые чем-то отличаются от хело ворлд. И я обьясню почему: потому, что по сути дела сам компилятор с его синтаксисом - это есть всего лишь база, а база без хидеров == обсолютно бестолковая вещь. Писать в стиле mov eax,[eax+0x80] и потом в комментариях писать о том, что это дескать eax == IMAGE_IMPORT_DESСRIPTOR не есть нормально. Поэтому многие открывая ваши исходники шарахаются от ассемблера как от чего-то страшного и непонятного. Другая сторона вопроса заключается в том, что для того, чтобы работать с чем-то(допустим mysql) нужны хидеры. Притом готовые хидеры, а не те, что выложены на флатассемблер.нет, которые датируются 2003годом и которые по сути дела бестолковые ввиду того, что там хидеры завязаны на макросах, а макросы к хидерам никто не выкладывал. Что я могу сказать: крайне жаль, что никто не занимается фасмом. Если у кого-то есть свои какие-то наработки, то не в коем случае ни с кем ими не делится. А зря. Создали бы в ветке WASM PROJECT топик и поскидывали все инклюды для фасма. Сами по себе инклюды для дятлов бесполезны, а вот для тех, кто хотел бы писать на фасме ой как понадобились бы. Только не надо меня гневить за этот топик, дескать я эмо и должен сам написать туеву хучу инклюдов сам. В принципе с чем работаю - под то и пишу инклюды, а вот недавно пришлось столкнуться с mysql и...и инклюдов днем с огнем не ссыщешь. Может всетаки создадим топик и каждый поделится своими наработками ?
http://board.flatassembler.net/topic.php?t=5150&start=3 Вот еще тулза: переводит Си-заголовки в GoAsm, который с Fasm имеют долю общего. Код (Text): format pe gui 4.0 include 'win32ax.inc' section '' code executable import readable writable library gdi32,'gdi32.dll',\ kernel32,'kernel32.dll',\ user32,'user32.dll' include 'api\gdi32.inc' include 'api\kernel32.inc' include 'api\user32.inc' ; struct CocaCola ; shit dd ? ; urine dd ? ; vomit dd ? ; wantme dd ? ; ends ; ; entry $ ; virtual at eax ; cc CocaCola ; end virtual ; mov [cc.shit],TRUE ; mov [cc.urine],TRUE ; mov [cc.vomit],TRUE ; mov [cc.wantme],FALSE ; ; invoke ExitProcess,0 struct CocaCola shit dd ? urine dd ? vomit dd ? wantme dd ? ends cc CocaCola FALSE,FALSE,FALSE,TRUE entry $ mov [cc.shit],TRUE mov [cc.urine],TRUE mov [cc.vomit],TRUE mov [cc.wantme],FALSE invoke ExitProcess,0
Я етот фрагмент совершенно не понял. Чем именно "хидеры" не устраивают? И что надо изменить, чтобы устраивали.
Упрощение поста #3(в режиме расширенного ответа номера не видны). Постив сюда, далее писал: http://board.flatassembler.net/topic.php?t=12204 метод virtual не так удобен: Код (Text): virtual at eax structure1 STRUCTURE end virtual поскольку дальнейшая попытка изменить базу адресации приведет к "имя уже определено": Код (Text): virtual at ebx structure1 STRUCTURE end virtual избежать можно выдумывая новое имя, но так вовсе не очень: Код (Text): virtual at eax structure1a STRUCTURE end virtual помним об масивах, где нужна относительная адресация поля: Код (Text): struct STRUCTURE f1 db ? f2 db ? ends structure1 STRUCTURE mov eax,[eax+structure1.f1-structure1] то был не лучьший способ, потому *.inc, отвечающий за структуры, следовало б обновить Код (Text): mov eax,[eax+structure1.rel.f1] ;примерно Дали ответ: http://board.flatassembler.net/topic.php?t=12204&start=1 Ну, за ту тулзочку, си-хидеры, и... Поспать не забывайте.
edemko virtual не надо изпользовать для етих целей. Я бы написал вот так: Код (Text): struct STRUCTURE f1 db ? f2 db ? ends movzx eax,[eax+STRUCTURE.f1] movsx ecx, [ebx+STRUCTURE.f2] И код читается легче и проблемы меньше.
"Никто не работает над FASM-ом..." Ну вообще-то работают, Я например, пишу IDE только для FASM. Даже с ООП и редактором форм. Когда готово будет - не могу сказать - пишу на FASM-е. Но это похоже будет финальный вариант - я начинал несколько раз, но потом бросал.