YASM Modular Assembler

YASM Modular Assembler

github.com

3

About this website

YASM is a free and open-source assembler that serves as a complete rewrite and reimplementation of the NASM (Netwide Assembler) x86 and x86-64 assembler. Originally started by Peter Johnson and Michael Urman in 2001, YASM was designed to address NASM's architectural limitations, including its monolithic C codebase, lack of modularity, and limited extensibility. Key features: NASM compatibility: YASM accepts the same x86 and x86-64 assembly syntax as NASM, making it a drop-in replacement for most NASM use cases. It supports Intel syntax (the default) and AT&T syntax (via the GNU as compatibility mode). Architecture support: full x86 (16-bit, 32-bit) and x86-64 (64-bit) instruction set support, including MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, and FMA extensions. Object format support: generates output in multiple formats: ELF (32 and 64-bit, for Linux and BSD), Mach-O (32 and 64-bit, for macOS), PE/COFF (32 and 64-bit, for Windows), RDOFF, and raw binary. Debugging format support: generates DWARF2, DWARF3, and STABS debugging information for debugger integration (gdb, lldb). Modular architecture: YASM's internal design separates the parser, optimizer, instruction encoder, and object file format modules, allowing new features to be added independently. This modularity also enables YASM's libyasm C library to be embedded in other applications (such as the Rust compiler's assembler backend). NASM preprocessor: includes a full NASM-compatible macro preprocessor with multi-line macros, conditional assembly, and string manipulation. Cross-platform: Linux, macOS, Windows, FreeBSD, NetBSD, OpenBSD. The project has been in maintenance mode since 2014, with NASM having regained feature parity. BSD-2-Clause.

Tags & Categories

Tags

Statistics

3
Views
0
Clicks
0
Like
0
Dislike

Comments

Log In to post a comment

No comments yet. Be the first!