flat assembler
Open source assembly language compiler.

The flat assembler (abbreviated to fasm, intentionally stylized with lowercase letters) is a fast assembler running in a variety of operating systems, in continued development since 1999. It was designed primarily for the assembly of x86 instructions and it supports x86 and x86-64 instructions sets with extensions like MMX, 3DNow!, SSE up to SSE4, AVX, AVX2, XOP, and AVX-512. It can produce output in plain binary, MZ, PE, COFF or ELF format. It includes a powerful but simple macroinstruction system and does multiple passes to optimize the size of instruction codes. The flat assembler is self-hosting and the complete source code is included.

The only difference between flat assembler versions included in the following packages is the operating system on which they can be executed. For any given source text each version is going to generate exactly the same output file, so each of the following releases can be used to compile programs for any operating system.

flat assembler 2 is now available as a set of scripts and headers based on flat assembler g. Except for the macroinstruction syntax, it is largely compatible with flat assembler 1, while adding several new features. See the dedicated thread for more information.

flat assembler g (abbreviated to fasmg) is a new assembly engine designed as a successor of the one used by flat assembler 1. Instead of having a built-in support for x86 instructions, it implements them through additional packages and in the same way it can be adapted to assemble for different architectures and purposes. With the included example packages it is capable of generating all the output formats that flat assembler 1 could and additional ones, like Mach-O or Intel HEX.

The following are third-party products based on flat assembler, available to download from their respective websites.

Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.