flat assembler | |||
---|---|---|---|
![]() Скриншот FASM с кодом из поставляемых примеров | |||
Тип | компилятор | ||
Разработчик | Томаш Грыштар | ||
Написана на | язык ассемблера | ||
Операционные системы | Unix-подобная операционная система, Windows, MS-DOS, DOS, Linux, OpenBSD, MenuetOS и KolibriOS | ||
Первый выпуск | 1999 | ||
Последняя версия | 1.73.32[1] (4 декабря 2023 ) | ||
Репозиторий | github.com/tgrysztar/fasm | ||
| |||
Лицензия | 2-пунктная лицензия BSD[вд][2] | ||
Сайт | flatassembler.net (англ.) |
Fasm (стилизовано под минускул; сокр. от flat assembler) — свободно распространяемый многопроходной ассемблер, написанный Томашем Грыштаром (пол. Tomasz Grysztar). Fasm самодостаточен[1], изначально компилировался TASM-ом и стал способен собираться из собственных исходных кодов начиная с 4 мая 1999 в версии 0.90. Fasm обладает небольшими размерами и очень высокой скоростью компиляции[источник не указан 1128 дней], имеет богатый и ёмкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач[3][4]. Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без компоновщика. В остальных случаях нужно использовать сторонние компоновщики, поскольку таковой вместе с Fasm не распространяется.
Помимо базового набора инструкций процессора и сопроцессора[каких?], fasm поддерживает наборы инструкций MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a, AVX, AVX-2, AVX-512, 3DNow!, дополнительные расширения AES, CLMUL, FMA, FMA4, XOP, а также EM64T и AMD64 (включая AMD SVM и Intel SMX).
Все вариации Fasm непосредственно могут создавать выходные файлы в следующих, предустановленных в ассемблер, форматах: объектные файлы (стандартно для большинства ассемблеров): Executable and Linkable Format (ELF) или Common Object File Format(COFF)(классический или в спецификации микрософт), исполняемые файлы (не требует дополнительных компоновщиков): MZ, ELF или Portable Executable (PE) (WDM драйвера включительно, с возможностью настройки MZ DOS stub). Для генерации файлов в формате, отличном от предустановленных, есть формат бинарный файл, дающий программисту полный контроль за каждым байтом выходного файла, однако всю структуру, содержание и взаимосвязи такого файла программисту придётся описывать непосредственно.
В качестве родной целевой архитектуры используются архитектуры IA32 и x86-64. Присутствует неофициальное дополнение fasmarm, в котором родные целевые архитектуры ARM и ARM64. Реализация целевых архитектур, отличных от родной, аналогична подобной реализации на любом другом ассемблере - для этих целей используются макрокоманды и директивы определения данных.
<ref>
; для сносок fasm_download
не указан текст<ref>
; для сносок manual
не указан текст<ref>
; для сносок whichASSEMBLERIsTheBest
не указан текст