1 Обзор компилятора
Flat assembler – быстрый многопроходный компилятор языка ассемблера. За счет совершения множественных проходов он позволяет использовать выражения до их объявления, разрешает использование условий и циклов. Если в качестве целевой используется архитектура x86, являющаяся для данного ассемблера «родной», то для нее (для каждого конкретного исходного текста) за счет множественных проходов генерируется минимально возможный по размеру машинный код.
Исходные тексты flat assembler представлены на языке самого flat assembler.
Логика компилятора рассчитана на выполнение в любом окружении архитектуры x86 c 32-разрядной или c 64-разрядной адресацией памяти, но обязательно с возможностью получения программой всех необходимых ресурсов в пределах 32-разрядных адресов. Эта логика построена поверх абстракций функционалов работы с файлами, памятью и пользовательским интерфейсом, поэтому независима от окружающей операционной системы. Реализация компилятора под определенной операционной системой сводится к реализации вышеописанных абстракций посредством обращения к api и системным вызовам окружения, затем совмещение этого всего в формате исполняемого файла для данной операционной системы. Благодаря этому номер версии компилятора Flat assembler сквозной для реализаций под всеми операционными системами, для которых эта реализация существует.
В основном компилятор представлен в виде консольных приложений окружающей операционной системы, но для Windows он дополнительно представлен в виде IDE с графическим интерфейсом и встроенным редактором, а также в виде динамически подгружаемой библиотеки.
Консольные реализации компилятора имеют имя fasm и расширение стандартное для исполняемых файлов операционной системы, реализация в виде динамически подгружаемой библиотеки называется fasm.dll, а реализации в виде IDE называются fasmw.exe (для графического интерфейса Windows) и fasmd.exe (для интерфейса DPMI DOS совместимого).