Welcome to the World of Native Linux Programming

This book is the result of years of practical experience writing, debugging, and teaching assembly language on the Linux platform.

The decision to concentrate solely on the Netwide Assembler (NASM) for Fedora Linux 43 and the x86-64 architecture is deliberate. NASM remains one of the most flexible, readable, and actively maintained assemblers for x86 processors, while Fedora provides a modern, standards-compliant userland suitable for both learning and professional development.

Yet there remains a real shortage of learning material that treats these two elements together with the depth and precision they deserve.

This is not a generic assembly language book. Every explanation, code listing, and warning has been verified against the most authoritative documentation available:

  • Intel® 64 and IA-32 Architectures Software Developer’s Manual

Volumes 1, 2, 3, and 4 provide the definitive specification of the x86 instruction set and system-programming architecture.

  • AMD64 Architecture Programmer’s Manual

Volumes 1–5 describe the 64-bit architectural extensions originally introduced by AMD and later adopted by Intel.

  • System V Application Binary Interface: AMD64 Architecture Processor Supplement

Together with the Linux manual pages and kernel documentation, this defines the calling convention, stack usage, system-call interface, and executable format implemented on Fedora Linux 43.

  • NASM Documentation (Version 2.16 and later)

The official reference for NASM directives, macros, syntax, and output formats.

When these references differ on subtle implementation details, this book follows the observable behavior of the Linux kernel and the processor itself, verified through repeated testing on physical hardware running Fedora Linux 43.


Why Another Assembly Book?

Many assembly language books still rely on:

  • 32-bit examples.
  • Obsolete assemblers.
  • Outdated Linux interfaces.
  • Legacy programming techniques.

This book has a different objective.

It is designed to be a practical reference that developers can keep open while working on real-world projects using:

  • Visual Studio Code
  • GNOME Builder
  • Vim, Emacs, Nano, or any text editor
  • NASM
  • GNU Linker (ld)
  • Linux terminal

The book follows an example-driven approach. Nearly every concept is immediately followed by a complete, assemble-ready source file that can be copied, assembled, linked, and executed without modification.

A typical build workflow looks like this:

BASH
nasm -f elf64 program.asm -o program.o
ld program.o -o program
./program

No theory is presented without practical application.

Linux system calls, stack alignment, the System V AMD64 ABI, ELF executable format, memory layout, and interaction with the C standard library are explained from the perspective of a practicing assembly programmer who needs to build reliable software—not simply pass an examination.

Throughout the book, the emphasis is placed on writing modern, portable, efficient, and production-quality x86-64 assembly programs that follow current Linux conventions and best practices.