Asm
Learning assembly for Linux x86_64
This repository contains blog posts that introduce the [assembly](https://en.wikipedia.org/wiki/Assembly_language) programming language. For this moment, all the content and examples cover only the [x86_64](https://en.wikipedia.org/wiki/X86-64) processors and the GNU Linux operating system. In the future, I plan to post learning materials for the [ARM64](https://en.wikipedia.org/wiki/AArch64) architecture. The project is written primarily in Assembly, distributed under the Other license, first published in 2014. It has gained significant community traction with 3,530 stars and 385 forks on GitHub. Key topics include: assembly, linux, x86-64.
Assembly programming
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!

Here are links to each post:
- Part 1. Introduction
- Part 2. The
x86_64concepts - 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
Requirements
To run code examples, you need the following tools:
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
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.
Author
The technical content is written by @0xAX.
Additional big thanks to @klaudiagrz for text improvements.
Contributors
Showing top 12 contributors by commit count.

