Software Alternatives, Accelerators & Startups

FASM VS Yasm

Compare FASM VS Yasm and see what are their differences

FASM logo FASM

Open source self-assembling assembler supporting multiple operating systems.

Yasm logo Yasm

Yasm is a complete rewrite of the NASM assembler.
  • FASM Landing page
    Landing page //
    2022-08-22
  • Yasm Landing page
    Landing page //
    2019-09-10

FASM features and specs

  • High Performance
    FASM (Flat Assembler) is known for its high-performance capabilities due to its design, which allows it to generate highly optimized machine code that can execute efficiently on processors, making it suitable for system-level programming where performance is critical.
  • Size Efficiency
    FASM produces very small executables, which is advantageous in environments where memory and storage space are limited. Its ability to create compact binaries is particularly useful in embedded systems and resource-constrained applications.
  • Simplicity and Directness
    FASM provides a straightforward approach to assembly programming. Its syntax and operation are designed to be simple and direct, which can facilitate learning and development for those familiar with assembly language.
  • Self-Contained
    FASM is a self-contained assembler, meaning it does not rely on external libraries or tools to function. This can simplify the setup process and reduce dependency issues across different systems and development environments.
  • Platform Support
    FASM supports multiple platforms, including Windows, Linux, and DOS, allowing developers to use the same assembler across different operating systems, enhancing its versatility and utility in cross-platform development.

Possible disadvantages of FASM

  • Steep Learning Curve
    Despite its simplicity compared to other assemblers, FASM still requires a deep understanding of assembly language programming, which can be challenging for beginners or those more accustomed to high-level programming languages.
  • Limited High-Level Features
    FASM lacks many of the high-level abstractions found in modern programming languages, which can make complex software development more cumbersome and time-consuming, particularly for applications outside of niche or system-level requirements.
  • Minimal Community and Support
    Compared to more popular development tools, FASM has a smaller community and limited official support resources. This can make finding help and examples more difficult when encountering issues or trying to implement specific features.
  • Debugging Difficulty
    Debugging assembly language programs can be difficult, as errors are often low-level and not as straightforward to trace or fix as in high-level languages. This can extend the development and testing phases of projects using FASM.
  • Compatibility and Portability Issues
    Writing in assembly language with FASM may lead to compatibility and portability issues, as code may need to be rewritten or heavily modified to work on different architectures or systems, limiting its flexibility for certain applications.

Yasm features and specs

  • Cross-Platform Compatibility
    Yasm is designed to work on multiple operating systems including Windows, Linux, and macOS, providing flexibility across development environments.
  • Support for Multiple Architectures
    Yasm supports multiple CPU architectures such as x86, x86-64, and more, making it versatile for developers working on different hardware platforms.
  • Open Source
    As free and open-source software, Yasm allows developers to contribute to its development and use it freely, improving security transparency and reducing costs.
  • Compatibility with NASM
    Yasm is largely compatible with NASM syntax, allowing developers who are familiar with NASM to easily transition to using Yasm.
  • Active Community
    The project has a supportive community that can help new users get started and provide ongoing support through forums and online resources.

Possible disadvantages of Yasm

  • Limited Documentation
    Some users might find the available documentation sparse or lacking in detailed examples, which can hinder the learning process for beginners.
  • Potential for Less Frequent Updates
    As with many open-source projects, the frequency of updates or new features may vary and sometimes lag behind more actively maintained projects.
  • Complex Configuration
    Advanced configuration might require a deep understanding of the tool and its syntax, posing a challenge for less experienced developers.
  • Toolchain Integration
    Integrating Yasm into certain modern development toolchains might not be as straightforward as with more popular or modern assemblers.

FASM videos

Code Review: string length in x64 assembly (fasm)

More videos:

  • Review - Code Review: x64 fasm strlen

Yasm videos

Spelunky Classic! Mod Review- YASM 1.7

More videos:

  • Review - A Night of Royalty: Kaftan Extravaganza | RCCG YASM Convention 2019 | Brandon and Tobi
  • Review - YASM Update - Mr YASM Mini Bio

Category Popularity

0-100% (relative to FASM and Yasm)
Text Editors
48 48%
52% 52
IDE
40 40%
60% 60
Software Development
100 100%
0% 0
Project Management
0 0%
100% 100

User comments

Share your experience with using FASM and Yasm. For example, how are they different and which one is better?
Log in or Post with

Social recommendations and mentions

Based on our record, FASM should be more popular than Yasm. It has been mentiond 14 times since March 2021. We are tracking product recommendations and mentions on various public social media platforms and blogs. They can help you identify which product is more popular and what people think of it.

FASM mentions (14)

  • Ask HN: What less-popular systems programming language are you using?
    Did you get a look at fasm [0] ? It has nice capabilities [0] : https://flatassembler.net/. - Source: Hacker News / 3 months ago
  • How do you add webassembly support?
    Are you affiliated with https://flatassembler.net/? Source: over 2 years ago
  • Ask HN: What are some excellent pieces of software written by a single person?
    Https://flatassembler.net Unfortunately it won't run on recent Macs since it's written in 32-bit assembly, so some modifications are needed. - Source: Hacker News / over 2 years ago
  • macOS Subsystem for Linux
    Running 32-bit apps, for example. I sometimes code in assembly for fun (my professional work is mobile app developer, though). One of my favorite assemblers is FASM: https://flatassembler.net/ It's still written in 32-bit assembly, which means it won't run on any macOS since Catalina. On the other side, Linux still provide 32-bit compatibility mode. - Source: Hacker News / over 2 years ago
  • Announcing: MiniRust
    Since you mentioned Zig, I'd like to ask a tangential question in case someone could chime in. Is there any way to have Zig output a flat binary? I am looking for a higher level FlatAssembler. [0] [0] https://flatassembler.net/. - Source: Hacker News / almost 3 years ago
View more

Yasm mentions (3)

  • The Netwide Assembler (NASM)
    Trust me, at least on Intel, you do not want to write assembly inside your C/C++ code, unless it's just a couple of lines. The usual AT&T syntax will drive you nuts, and the additional syntax for embedding assembly only adds to the misery. For any reasonable amounts (say, you want a function or several) of assembly, you want Intel syntax and standalone assembly files. NASM is a great tool, although YASM should... - Source: Hacker News / over 1 year ago
  • Choosing the best assembler to work under GNU/Linux
    Things like yasm only have tasm support...not sure if that will be enough in your case. Source: about 3 years ago
  • NASM Assembly Language Tutorials
    Can also recommend the rewrite of NASM, YASM. https://yasm.tortall.net/. - Source: Hacker News / over 3 years ago

What are some alternatives?

When comparing FASM and Yasm, you can also consider the following products

NASM - The Netwide Assembler, NASM, is an 80x86 and x86-64 assembler designed for portability and...

LLVM - LLVM is a compiler infrastructure designed for compile-time, link-time, run-time, and...

flat assembler - A fast and efficient self-assembling x86 assembler for DOS, Windows and Linux.

clang - C, C++, Objective C and Objective C++ front-end for the LLVM compiler.

PCem - PCem emulates an IBM 5150 PC, several models of clones and successors, along with various graphics...

Virtual Windows 98 - Use Windows 98 in your browser