FASM
Developer(s) | Tomasz Grysztar |
---|---|
Initial release | March 2000 |
Stable release | 1.73.30[1]
/ 21 February 2022 |
Repository | |
Written in | Assembly |
weak copyleft clause | |
Website | flatassembler |
FASM (flat assembler) is an
All versions of FASM can directly output any of the following: flat "raw"
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.[5][6] 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
FASM is a multi-pass assembler. It makes extensive code-size optimization and allows unconstrained forward referencing.[3][7] 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.[7] Such an approach saves FASM sources from compiling problems often present in many assembly projects. On the other hand, it makes it harder to maintain a project that consists of multiple separately compiled source files or mixed-language projects. However, there exists a Win32 wrapper called FA, which mitigates this problem.[8] FASM projects can be built from one source file directly into an executable file without a linking stage.[3]
IDE
Fresh, an internet community supported project started by John Found, is an integrated development environment for FASM.[9] Fresh currently supports Microsoft Windows and Linux.[9]
Use
Operating systems written with FASM:
- 64-bitGUI operating systems by Ville Turijanmaa
- KolibriOS
Compilers that use FASM as a backend:
- PureBasic
- High Level Assembly (HLA)
- BlitzMax
See also
References
- ^ Error: Unable to display the reference properly. See the documentation for details.
- ^ Grysztar, Tomasz (2008-05-12). "Flat Assembler Programmer's Manual". flat assembler. Retrieved 2008-05-12.
- ^ a b c d e Hyde, Randall. "Which Assembler is the Best?". Retrieved 2008-05-18.[permanent dead link]
- ^ "FASMARM". 2008-03-20. Retrieved 2008-05-12.
- ^ a b "Interview with Privalov the author of FASM". 2004-08-12. Archived from the original on 2007-10-08. Retrieved 2008-05-12.
- ^ Grysztar, Tomasz (2000-03-15). "flat assembler". Retrieved 2008-05-19.
- ^ a b c Grysztar, Tomasz. "Flat Assembler Design Principles". Retrieved 2008-05-12.
- ^ Grysztar, Tomasz. "FA – command line extension for fasm". Retrieved 2012-05-11.
- ^ a b Found, John. "Fresh ID project".
- ^ "MenuetOS". Retrieved 2008-05-18.
External links
- FASM project: Official website
- FASMLIB 0.8.0 – portable 32-bit x86 asm lib for FASM/MASM/YASM/NASM/GASM
- FASMARM – FASM for ARM processors, v1.27, June 9, 2012
- The Fresh IDE