Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
FASM
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Open source assembler for x86 processors}} {{For|the Royal Navy project also known as "FASM"|Future Attack Submarine}} {{Infobox software | name = FASM | screenshot = FASM2.png | caption = Screenshot with supplied example | developer = Tomasz Grysztar | released = {{Start date and age|2000|03}} | latest release version = {{wikidata|property|reference|edit|P348}} | latest release date = {{Start date and age|{{wikidata|qualifier|P348|P577}}}} | latest_preview_version = | latest_preview_date = | programming language = Assembly | operating_system = [[Unix-like]], [[Linux]], [[Microsoft Windows|Windows]] and IDE, [[MS-DOS]] and IDE, [[OpenBSD]], etc., [[MenuetOS]], [[KolibriOS]], [http://octavio.vega.fernandez.googlepages.com/octaos/ OctaOS], DexOS and IDE, [[SkyOS]], [http://www.oby.ro/os/ Solar_OS] | platform = [[x86]], [[x86-64]] | genre = [[Assembly language assembler|Assembler]] | license = [[Simplified BSD license|Simplified BSD]] with a [[weak copyleft]] clause | website = {{url|flatassembler.net}} }} '''FASM''' (''flat assembler'') is an [[assembly language assembler|assembler]] for [[x86]] processors. It supports [[x86 assembly language|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 (computer science)|macro]] abilities.<ref name="Manual">{{cite web |author=Grysztar |first=Tomasz |date=2008-05-12 |title=Flat Assembler Programmer's Manual |url=http://flatassembler.net/docs.php?article=manual |accessdate=2008-05-12 |website=flat assembler}}</ref><ref name="WhichAsm"/> It is a [[low-level programming language|low-level]] assembler<ref name="WhichAsm"/> and intentionally uses very few [[command line interface|command-line]] options. It is [[free and open-source software]]. All versions of FASM can directly output any of the following: flat "raw" [[binary file|binary]] (usable also as MS-DOS [[COM file|COM executable]] or SYS driver), objects: [[Executable and Linkable Format]] (ELF) or [[COFF|Common Object File Format]] (COFF) (classic or MS-specific), or executables in either [[DOS MZ executable|MZ]], ELF, or [[Portable Executable]] (PE) format (including WDM drivers, allows custom MZ DOS stub). An unofficial port targeting the [[ARM architecture]] ([http://arm.flatassembler.net FASMARM]) also exists.<ref name="ARM">{{cite web|url=http://arm.flatassembler.net/|title=FASMARM|date= 2008-03-20|accessdate=2008-05-12}}</ref> == 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.<ref name="Interview">{{cite web|url=http://www.wasm.ru/article.php?article=privalov_en|title=Interview with Privalov the author of FASM|date=2004-08-12|access-date=2008-05-12|archive-url=https://web.archive.org/web/20071008021423/http://wasm.ru/article.php?article=privalov_en|archive-date=2007-10-08|url-status=dead}}</ref><ref name="Release">{{cite web |author=Grysztar |first=Tomasz |date=2000-03-15 |title=flat assembler |url=http://marc.info/?l=freedos-dev&m=95311018003959&w=2 |accessdate=2008-05-19}}</ref> FASM is completely written in [[assembly language]] and comes with full source. It is [[Self-hosting (compilers)|self-hosting]] and has been able to assemble itself since version 0.90 (May 4, 1999). FASM originally ran in 16-bit [[unreal mode|flat real mode]]. 32-bit support was added and then supplemented with optional [[DOS Protected Mode Interface|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 assembler|high-level]] statements as [[MASM]] or [[TASM]].<ref name="WhichAsm">{{cite web |author=Hyde |first=Randall |title=Which Assembler is the Best? |url=http://mmcs.sfedu.ru/~ulysses/Edu/MP/WhichAsm.html |archive-url=https://archive.today/20131116172530/http://mmcs.sfedu.ru/~ulysses/Edu/MP/WhichAsm.html |url-status=dead |archive-date=November 16, 2013 |accessdate=2008-05-18 }}</ref> It provides syntax features and macros, which make it possible to customize or create missing statements.<ref name="Interview"/> Its memory-addressing syntax is similar to TASM's ideal mode and [[Netwide Assembler|NASM]]. Brackets are used to denote memory operands as in both assemblers, but their size is placed outside the brackets, like in NASM.<ref name="Design"/> FASM is a multi-pass assembler. It makes extensive code-size optimization and allows unconstrained forward referencing.<ref name="WhichAsm"/><ref name="Design">{{cite web |author=Grysztar |first=Tomasz |title=Flat Assembler Design Principles |url=http://flatassembler.net/docs.php?article=design |accessdate=2008-05-12}}</ref> 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 (computing)|linker]]. FASM is based on the "same source, same output" principle: the contents of the resulting file are not affected by the command line.<ref name="Design"/> 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 library|wrapper]] called FA, which mitigates this problem.<ref name="FA">{{cite web |author=Grysztar |first=Tomasz |title=FA β command line extension for fasm |url=http://board.flatassembler.net/topic.php?t=9948 |accessdate=2012-05-11}}</ref> FASM projects can be built from one source file directly into an executable file without a linking stage.<ref name="WhichAsm" /> == IDE == '''Fresh''', an internet community supported project started by John Found, is an [[integrated development environment]] for FASM.<ref name="fresh">{{cite web |last=Found |first=John |title=Fresh ID project |url=https://fresh.flatassembler.net/}}</ref> Fresh currently supports Microsoft Windows and Linux.<ref name=fresh/> == Use == Operating systems written with FASM: * [[MenuetOS]]<ref name="MenuetOS">{{cite web|url=http://www.menuetos.net/|title=MenuetOS|accessdate=2008-05-18}}</ref> β 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]] == References == {{Reflist}} == External links == * FASM project: {{official website|flatassembler.net}} * [http://fasmlib.x86asm.net/ FASMLIB] 0.8.0 β portable 32-bit x86 asm lib for FASM/MASM/YASM/NASM/GASM * [http://arm.flatassembler.net FASMARM] β FASM for ARM processors, <small> v1.27, {{Release date|2012|06|09}}</small> * [http://fresh.flatassembler.net/ The Fresh IDE] {{X86 assembly topics}} [[Category:2000 software]] [[Category:Assemblers]] [[Category:DOS software]] [[Category:Free software primarily written in assembly language]] [[Category:Linux programming tools]] [[Category:Programming tools for Windows]] [[Category:Self-hosting software]] [[Category:Unix programming tools]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Cite web
(
edit
)
Template:For
(
edit
)
Template:Infobox software
(
edit
)
Template:Official website
(
edit
)
Template:Reflist
(
edit
)
Template:Release date
(
edit
)
Template:Short description
(
edit
)
Template:X86 assembly topics
(
edit
)
Search
Search
Editing
FASM
Add topic