This repository contains my notes and programs as I explore x86 assembly language, guided by the book Programming from the Ground Up by Jonathan Bartlett.
Assembly language is a key to understanding how computers work at the hardware level. This repository serves as a record of my learning journey, with:
- Notes: summarizing concepts and examples of each chapter from the book.
- Programs: written from exercises in the book.
- Personal programs: I wrote to deepen my understanding of x86 assembly concepts.
The repository is organized as follows:
notes/
: Contains detailed notes and explanations from Programming from the Ground Up.src/
: Assembly programs written as exercises or examples from the book.src/personnal
: Programs I created to experiment with and reinforce the concepts.
To run the programs in this repository, you'll need:
- GNU Assembler (
as
): Install via your package manager (e.g.,sudo pacman -S binutils
for Arch Linux). - Linker (
ld
): Part of the GNU Binutils package.
- Clone the repo:
git clone https://github.com/jspmic/learn-x86_asm.git
cd learn-x86_asm
- Build the project:
make
- Run the program(e.g
./build/factorial
)
- Programming From The Ground Up by Jonathan Bartlett (used as a primary reference).
- Additional research and experimentation for personal programs.
Understanding assembly provides insights into:
- How high-level languages interact with hardware.
- Optimization techniques for low-level systems.
- The inner workings of compilers and operating systems.
While this repository is primarily for personal learning, feel free to:
- Submit suggestions or corrections via pull requests.
- Open issues to discuss assembly concepts.
This repository is licensed under the MIT License.