0xAX

asm: Learn Linux x86_64 Assembly Programming

A chapter-based introduction to assembly programming for Linux x86_64, with explanations and runnable NASM examples. It suits readers learning how low-level programs work and how assembly interacts with C and the operating system.

ShellOther licenseEducationLinuxProgramming
View on GitHub Compare
Stars
3.6k
Forks
391
Stars, last 30 days
+12

Our take

Health score

53/100

How it is scored
Activity
50
Community
45
Issues
53
Pull requests
62

+12 stars in the last 30 days

Project history

Daily GitHub snapshots since Oct 7, 2026. History covers stars and forks; health signals are not tracked historically.

Selected snapshot

Stars

3,659

Forks

394

Change since Nov 8, 2026: +1 stars·+1 forks

Overview

0xAX/asm is a learning resource that teaches assembly programming for x86_64 processors on GNU/Linux. It addresses the gap between higher-level programming and machine-level execution through explanations paired with code examples.

The material is organized as a seven-part series, from processor concepts and stack use to floating-point arithmetic and calling assembly from C. It is a fit for readers who want a guided introduction rather than a reference covering multiple architectures or operating systems.

Key Features

  • Seven chapters progress from introductory concepts to assembly and high-level language interaction.
  • Explains x86_64 processor concepts and the structure of Linux programs.
  • Covers memory allocation, stack and heap, and system calls.
  • Introduces floating-point representation and arithmetic.
  • Includes code examples in the examples directory.
  • Offers the posts as a downloadable PDF book.
  • Lists volunteer translations in Chinese, Turkish, Korean, and Russian.

Use Cases

  • A programmer starting with assembly can follow the chapters and build a foundation in x86_64.
  • A Linux learner can use the examples to explore how programs interact with the operating system through system calls.
  • A C programmer can consult the later material when learning how to call assembly code from C.
  • An instructor or independent learner can use the chapter sequence and examples as supplementary course material.

Getting Started

Read the repository README and begin with Part 1: Introduction. To run the examples, use a 64-bit Linux distribution with make, NASM, and binutils installed. See the README for the full chapter list and PDF download.

Alternatives

  • asm-lessons: This teaches assembly through FFmpeg code and contribution-oriented lessons, while asm focuses on runnable NASM examples for Linux x86_64 and OS interaction.
ProjectLanguageLicenseStarsStatus
asmShellOther3.6kNot checked yet
asm-lessons––12.2kQuiet

Considerations

  • The lessons and examples focus on x86_64 and GNU/Linux, not other architectures or operating systems. ARM64 material is described as a future plan.
  • Running the examples requires a 64-bit Linux distribution, make, NASM, and binutils.
  • The Markdown content is licensed CC BY-NC-SA 4.0, which requires attribution, prohibits commercial use, and requires adaptations to use the same license. The repository metadata reports the license as NOASSERTION.
  • The README notes that translations may diverge from the original content.

Found this useful?

Share it with someone who would like asm.

Comparisons