Developer(s) | Tomasz Grysztar |
---|---|
Initial release | March 2000; 20 years ago |
Stable release | 1.73.24 / April 29, 2020; 6 months ago |
Operating system | Unix-like, Linux, Windows and IDE, DOS and IDE, OpenBSD, etc., MenuetOS, KolibriOS, OctaOS, DexOS and IDE, SkyOS, Solar_OS |
Platform | x86, x86-64 |
Type | Assembler |
License | Simplified BSD with a weak copyleft clause |
Website | flatassembler.net |
Welcome to the site of the flat assembler! This is a place dedicated to assembly language programming and contains many resources for both beginners and advanced assembly programmers. A recent FSL 6.0.3 patch for macOS users may fail the checksum when downloaded. If this happens, or to avoid the download integrity check entirely you can use the -M option with the fslinstaller.py script. For example: python fslinstaller.py -M.
- Anyway, perhaps on the Mac, NASM or FASM can be used. They are much more similar to MASM than GASM. – Rudy Velthuis Jan 9 '15 at 12:37 show 1 more comment. 1 Answer Active Oldest Votes. Programs are made up of more than just the raw machine code. The executable needs to have a special format that the OS can understand, so it can load.
- What does FASM stand for? List of 19 FASM definitions. Updated April 2020. Top FASM abbreviation meaning: Flat Assembler.
FASM (flat assembler) is an assembler for x86 processors. It supports Intel-styleassembly language on the IA-32 and x86-64 computer architectures. It claims high speed, size optimizations, operating system (OS) portability, and macro abilities.[1][2] It is a low-level assembler[2] and intentionally uses very few command-line options. It is free and open-source software.
All versions of FASM can directly output any of the following: flat 'raw' binary (usable also as DOS COM executable or SYS driver), objects: Executable and Linkable Format (ELF) or Common Object File Format (COFF) (classic or MS-specific), or executables in either MZ, ELF, or Portable Executable (PE) format (including WDM drivers, allows custom MZ DOS stub). An unofficial port targeting the ARM architecture (FASMARM) also exists.[3]
History[edit]
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.[4][5] 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 only ran in 16-bit flat real mode. 32-bit support was added and then supplemented with optional DPMI support. It was written in a way that made it easy to port to any operating system that allowed flat 32-bit addressing; it was ported to Windows and then Linux.
Design[edit]
FASM does not support as many high-level statements as MASM or TASM.[2] It provides syntax features and macros, which make it possible to customize or create missing statements.[4] Its memory-addressing syntax is similar to TASM's ideal mode and NASM. Brackets are used to denote memory operands as in both assemblers, but their size is placed outside the brackets, like in NASM.[6]
FASM is a multi-pass assembler. It makes extensive code-size optimization and allows unconstrained forward referencing.[2][6] 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.[6] 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.[7] FASM projects can be built from one source file directly into an executable file without a linking stage.[2]
Fasm Macro Tutorial
IDE[edit]
Fresh, an internet community supported project started by John Found, is an integrated development environment for FASM.[8] Fresh currently supports Microsoft Windows and Linux.[8]
Use[edit]
Operating systems written with FASM:
- DexOS[9] – by Craig Bamford and the DexOS community
- MenuetOS[10] – 32- and 64-bit GUI operating systems by Ville Turijanmaa
Compilers that use FASM as a backend:
- High Level Assembly (HLA)
See also[edit]
References[edit]
Fast Format Tool
Fasm For Mac Os
- ^Tomasz Grysztar. 'Flat Assembler Programmer's Manual'. Retrieved 2008-05-12.
- ^ abcdeRandall Hyde. 'Which Assembler is the Best?'. Retrieved 2008-05-18.
- ^'FASMARM'. 2008-03-20. Retrieved 2008-05-12.
- ^ ab'Interview with Privalov the author of FASM'. 2004-08-12. Archived from the original on 2007-10-08. Retrieved 2008-05-12.
- ^Tomasz Grysztar (2000-03-15). 'flat assembler'. Retrieved 2008-05-19.
- ^ abcTomasz Grysztar. 'Flat Assembler Design Principles'. Retrieved 2008-05-12.
- ^Tomasz Grysztar. 'FA – command line extension for fasm'. Retrieved 2012-05-11.
- ^ ab'Fresh ID project'.
- ^'DexOS FAQ'. Archived from the original on 2016-03-03. Retrieved 2008-05-18.
- ^'MenuetOS'. Retrieved 2008-05-18.
External links[edit]
- 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