FASM (flat assembler) is an assembler for x86 processors. It supports Intel-style assembly language on the IA-32 and x86-64 computer architectures. It claims high speed, size optimizations, operating system (OS) portability, and macro abilities.
History
The project was started in 1999 by Tomasz Grysztar, a.k.a. Privalov, at that time an undergraduate student of mathematics from Poland. It was released publicly in March 2000. FASM is completely written in assembly language and comes with full source. It is self-hosting and has been able to assemble itself since version 0.90 (May 4, 1999).
FASM originally ran in 16-bit flat real mode. 32-bit support was added and then supplemented with optional DPMI support. Designed to be easy to port to any operating system with flat 32-bit addressing, it was ported to Windows, then Linux.
Design
FASM does not support as many high-level statements as MASM or TASM. It provides syntax features and macros, which make it possible to customize or create missing statements. An unusual FASM construct is defining procedures only if they are used somewhere in the code, something that in most languages is done per-object by the linker.
FASM is based on the "same source, same output" principle: the contents of the resulting file are not affected by the command line. FASM projects can be built from one source file directly into an executable file without a linking stage.
Use
Operating systems written with FASM:
- MenuetOS – 32- and 64-bit GUI operating systems by Ville Turijanmaa
- KolibriOS
Compilers that use FASM as a backend:
- PureBasic
- High Level Assembly (HLA)
- BlitzMax
See also
- Comparison of assemblers
- List of assembly software and tools
References
External links
- FASM project:
- FASMLIB 0.8.0 – portable 32-bit x86 asm lib for FASM/MASM/YASM/NASM/GASM
- FASMARM – FASM for ARM processors, <small> v1.27, </small>
- The Fresh IDE
