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!
References to every post:
- Part 1. Introduction
- Part 2. The
x86_64
concepts - Say hello to x86_64 Assembly part 3
- Say hello to x86_64 Assembly part 4
- Say hello to x86_64 Assembly part 5
- Say hello to x86_64 Assembly part 6
- Say hello to x86_64 Assembly part 7
- Say hello to x86_64 Assembly part 8
If you find any typo, or translation mistakes feel free to open issue of PR. Read the Contribution guide to learn how to contribute to the project. When contributing, make sure to follow the Code of Conduct.
The technical content is written by @0xAX. The translation is written by @develoopeer.
Additional big thanks to @klaudiagrz for text improvements in original repo.