Frameworks

Frameworks#

Assembly has no application frameworks in the high-level sense. What it has is assemblers, linkers, and build glue that wrap the toolchain so projects don’t reinvent the inner loop.

Assemblers#

Tool

Notes

nasm

Intel syntax; multi-platform; the de-facto x86 / x86-64 assembler.

yasm

Drop-in replacement for nasm; less actively maintained.

gas (as)

GNU assembler; AT&T syntax by default; ships with binutils.

fasm

Self-hosting flat assembler; powerful macro system.

masm

Microsoft Macro Assembler (Windows / Visual Studio).

armasm / llvm-mc

ARM and LLVM-based multi-arch assemblers.

Linkers#

  • ld, GNU linker; the default on Linux.

  • lld, LLVM linker; faster, increasingly common.

  • mold, modern parallel linker.

Build glue#

Most asm projects sit inside a larger build (Makefile, CMake, Cargo for asm! blocks, Go’s //go:noescape paired with per-arch .s files). The conventional layout puts each architecture in its own file and lets the build system pick the right one.

$ ls src/
src/main.c  src/inner.c  src/asm/x86_64.s  src/asm/aarch64.s

References#