yasm
Modular x86 and AMD64 assembler
TLDR
SYNOPSIS
yasm [options] infile
DESCRIPTION
yasm is a modular assembler supporting x86 and AMD64 instruction sets. It is a complete rewrite of NASM under the BSD license, offering multiple input syntaxes and output formats.Supported syntaxes include NASM (default) and GAS (GNU Assembler). Output formats cover ELF, Win32/Win64 PE, Mach-O, COFF, and raw binary (bin, the default). Debug information can be generated in DWARF 2, STABS, or CodeView 8 formats. Use `yasm -f help` to list all available object formats.The assembler is used for low-level system programming, operating system development, and performance-critical code. It integrates with C/C++ toolchains through standard object file formats.
PARAMETERS
-f format, --oformat=format
Output format (default: bin): bin, elf32, elf64, win32, win64, macho32, macho64, coff.-o outfile, --objfile=outfile
Output file name.-a arch, --arch=arch
Target architecture (default: x86).-m machine, --machine=machine
Machine subtype: x86, amd64.-p parser, --parser=parser
Syntax parser: nasm (default), gas.-r preproc, --preproc=preproc
Preprocessor: nasm (default), raw, cpp, gas.-g debug, --dformat=debug
Debug format: dwarf2, stabs, cv8, null.-L list, --lformat=list
List file format (default: nasm).-l file, --list=file
Output list file name.-D macro[=value]
Define preprocessor macro.-U macro
Undefine macro.-I path
Add include search directory.-P file
Pre-include file before input.-e, --preproc-only
Preprocess only (no assembly), output to stdout.-w
Suppress all warning messages.-Werror
Treat warnings as errors.-Worphan-labels
Warn on labels lacking trailing colons (NASM mode).-X style
Error/warning reporting style: gnu or vc.--force-strict
Treat all sized operands as strict.--version
Display version.-h, --help
Display help.
CAVEATS
Some NASM syntax extensions may not be fully compatible. GAS syntax support is not complete. AMD64 mode requires explicit selection via -m amd64 or 64-bit object format.
HISTORY
yasm was created by Peter Johnson and Michael Urman as a rewrite of NASM with a modular architecture. It aimed to support multiple architectures and syntaxes while maintaining NASM compatibility. Development began in 2001 with the project remaining actively used in various build systems.
