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
(section)
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!
== 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" />
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)
Search
Search
Editing
FASM
(section)
Add topic