- FASM
Infobox_Software
name = FASM
caption = flat assembler
developer = Tomasz Grysztar
latest_release_version = 1.67.27
latest_release_date = release date|2008|07|12
operating_system =DOS (also IDE), Windows (also IDE),Linux ,Unix (OpenBSD, etc.),MenuetOS , [http://octavio.vega.fernandez.googlepages.com/octaos OctaOS] ,DexOS (also IDE),SkyOS , [http://www.oby.ro/os/index.html Solar_OS]
platform =x86 ,x86-64
genre = Assembler
license =Freeware / Open Source / BSD
website = http://flatassembler.netFASM ("Flat Assembler") is a free and
open source Intel-style assembler supporting theIA-32 andx86-64 architectures. It is known for its fast speed, size optimizations, OS portability, and macro capabilities.cite web|url=http://flatassembler.net/docs.php?article=manual|title=Flat Assembler Programmer's Manual|accessdate=2008-05-12|author=Tomasz Grysztar] It is a low-level assembler and uses few command-line options.FASM contains bindings to the Windows
GUI andOpenGL . All versions of FASM can directly output any of the following: flat "raw" binary (usable also as DOS COM executable or SYS driver), objects: ELF orCOFF (classic or MS-specific), or executables in either MZ, ELF or PE format (including WDM drivers, allows custom MZ DOS stub). OMF objects, NE, LE, and LX executables are not natively supported by FASM (but see Agner Fog's OBJCONV). An unofficial port targeting theARM architecture ( [http://arm.flatassembler.net FASMARM] ) also exists.cite web|url=http://arm.flatassembler.net/|title=FASMARM|date= 2008-03-20|accessdate=2008-05-12]History
The project was started in 1999 by Tomasz Grysztar, aka "Privalov" (at that time, an undergraduate student of mathematics from
Poland ) and its first public release was announced onMarch 15 ,2000 .cite web|url=http://www.wasm.ru/print.php?article=privalov_en|title=Interview with Privalov the author of FASM|accessdate=2008-05-12] cite web|url=http://marc.info/?l=freedos-dev&m=95311018003959&w=2|title=flat assembler|date=2000-03-15|accessdate=2008-05-19|author=Tomasz Grysztar] FASM is completely written inassembly language and comes with full source. It isself-hosting and has been able to assemble itself since version 0.90 (May 4 ,1999 ). It has been used to write several operating systems includingMenuetOS cite web|url=http://www.menuetos.net/|title=MenuetOS|accessdate=2008-05-18] ,KolibriOS cite web|url=http://www.kolibrios.org/|title=KolibriOS|accessdate=2008-05-18] andDexOS .cite web|url=http://www.dex4u.com/faq.htm|title="DexOS FAQ"|accessdate=2008-05-18]Design
FASM is a low-level assembler. It does not support as many high-level statements as
MASM orTASM .cite web|url=http://webster.cs.ucr.edu/AsmTools/WhichAsm.html|title=Which Assembler is the Best?|accessdate=2008-05-18|author=Randall Hyde] Instead it provides syntax features and macros which make it possible to customize or create missing statements. 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.FASM is a multi-pass assembler. It makes extensive code size optimization, and allows more forward referencing.cite web|url=http://flatassembler.net/docs.php?article=design|title=Flat Assembler Design Principles|accessdate=2008-05-12|author=Tomasz Grysztar] A usual FASM construct is defining data or 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 "SSSO principle" (same source, same output). This means the contents of the resulting file are not affected by the command line (except recently (in 1.67.24) added "-D" switch). Such an approach saves FASM sources from compilation problems often present in many assembly projects. On the other hand, it makes it very hard to maintain a project that consists of multiple separately compiled source files, or mixed-language projects. FASM projects can be built from a single source directly into executable without a linking stage.
Examples
*
DexOS , [http://www.dex4u.com] & BOS -32-bit DOS-like OS'es
*MenuetOS , [http://www.menuetos.net] - 32-bit and64-bit GUI operating systems
*KolibriOS , [http://www.kolibrios.org] 32-bit GUI OS
*FASMLIB - portable library for x86 32-bit assembly programming
* [http://sourceforge.net/projects/proe PROE] - x86-64 encryption engine
* [http://ronware.org/reva/wiki/Main_Page RevaForth]
* [http://ufmod.sourceforge.net uFMOD] - .xm player for Win32, Linux, Unix/BSD and KolibriOSSeveral compilers also use FASM as a backend:
*PureBasic
* HLA (High Level Assembly)
*BlitzMax
* [http://www.avhohlov.narod.ru/p9810en.htm Context/Win32]
* [http://chewy509.110mb.com/b0.html B0]
* [http://www.reda4.org :R4]See also
*
Comparison of assemblers References
External links
* FASM project: [http://flatassembler.net/ website] , [http://flatassembler.net/docs.php?article=manual official manual] , [http://flatassembler.net/examples.php examples] , [http://board.flatassembler.net/ message board] , [http://fasm.sourceforge.net/archive/ archive of older versions]
* [http://arm.flatassembler.net FASMARM] 1.12 - FASM for ARM processors "13-Jul-2008"
* [http://fasmlib.x86asm.net/ FASMLIB] 0.8.0 - portable 32-bit x86 asm lib for FASM/MASM/YASM/NASM
Wikimedia Foundation. 2010.