GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - 0xAX/asm: Learning assembly for Linux x86_64

BranchesTags
Open more actions menu

Latest commit

 

History

237 Commits
237 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
content
content
 
 
examples
examples
 
 
scripts
scripts
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CODEOWNERS
CODEOWNERS
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTORS.md
CONTRIBUTORS.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
lychee.toml
lychee.toml
 
 

Repository files navigation

Assembly programming

CC BY-NC-SA 4.0 Check Links Examples Download PDF star this repo fork this repo contributions welcome PRs Welcome

This repository contains blog posts that introduce the assembly programming language. For this moment, all the content and examples cover only the x86_64 processors and the GNU Linux operating system. In the future, I plan to post learning materials for the ARM64 architecture.

Whether you are an experienced programmer or not, these posts are intended for everyone to learn the assembly programming language. The posts cover the following topics:

  • Basic description of the x86_64 processor architecture
  • How to write, build, and run a simple program written in the assembly programming language
  • The main parts of which a program for Linux consists
  • Basics of memory allocation, what is stack and heap
  • What is a system call and how does your program interact with an operating system
  • How floating point numbers are represented in a computer memory
  • How to call assembly code from a C program
  • And many more...

Have fun!

Magic

Here are links to each post:

  • Part 1. Introduction
  • Part 2. The x86_64 concepts
  • Part 3. Journey through the stack
  • Part 4. Data manipulation
  • Part 5. Macros
  • Part 6. Floating-point arithmetic
  • Part 7. Assembly interaction with high-level programming languages

Note

All the posts are also available as a single PDF book that you can download here.

The code examples that accompany the chapters live in the examples directory.

Requirements

To run code examples, you need the following tools:

  • 64-bit distribution of Linux
  • make
  • NASM
  • binutils

Translations

Thanks to the volunteers, the posts about assembly programming are translated into different languages.

Note

The translations may diverge from the original content.

Chinese translation

  • 译文: Say hello to x64 Assembly [part 1]
  • 译文: Say hello to x64 Assembly [part 2]
  • 译文: Say hello to x64 Assembly [part 3]
  • 译文: Say hello to x64 Assembly [part 4]
  • 译文: Say hello to x64 Assembly [part 5]
  • 译文: Say hello to x64 Assembly [part 6]
  • 译文: Say hello to x64 Assembly [part 7]
  • 译文: Say hello to x64 Assembly [part 8]

Turkish translation

  • X86_64 Assembly'a merhaba deyin bölüm 1
  • X86_64 Assembly'a merhaba deyin bölüm 2
  • X86_64 Assembly'a merhaba deyin bölüm 3
  • X86_64 Assembly'a merhaba deyin bölüm 4
  • X86_64 Assembly'a merhaba deyin bölüm 5
  • X86_64 Assembly'a merhaba deyin bölüm 6
  • X86_64 Assembly'a merhaba deyin bölüm 7
  • X86_64 Assembly'a merhaba deyin bölüm 8

Korean translation

  • X86_64 어셈블리와 친해지기 [파트 1]
  • X86_64 어셈블리와 친해지기 [파트 2]
  • X86_64 어셈블리와 친해지기 [파트 3]
  • X86_64 어셈블리와 친해지기 [파트 4]
  • X86_64 어셈블리와 친해지기 [파트 5]
  • X86_64 어셈블리와 친해지기 [파트 6]
  • X86_64 어셈블리와 친해지기 [파트 7]
  • X86_64 어셈블리와 친해지기 [파트 8]

Russian translation

  • GitHub repository

Contribution

Read the Contribution guide to learn how to contribute to the project. When contributing, make sure to follow the Code of Conduct.

License

Each Markdown file in the repository is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

Author

The technical content is written by @0xAX.

Additional big thanks to @klaudiagrz for text improvements.

About

Learning assembly for Linux x86_64

0xax.dev/books/asm/

Topics

assemblylinuxx86-64

Resources

Readme
License

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity

Stars

3.7k stars

Watchers

100 watching

Forks

394 forks
Report repository

Sponsor this project

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.