This repository is dedicated to my journey through Low-Level Programming, focusing on Assembly (ASM) and its integration with C/C++. As a Computer Engineering student, I use this space to document troubleshooting, hardware-software interfacing, and the fundamental logic of CPU operations.
The core objective is to master how complex systems handle data at the register level, moving beyond high-level abstractions to understand the "bare metal" mechanics of computing.
- Architecture: x86/x86_64 (AT&T Syntax).
- Toolchain: GCC, GDB, and Linux (Zorin OS) environment.
- Core Concepts: Register manipulation (EAX, EBX, etc.), Memory Load/Store cycles, and Inline Assembly.
In this repository, we explore the Load/Store Architecture. Modern CPUs do not perform arithmetic operations directly within the RAM. The process follows a strict cycle:
- Load: Data is copied from a memory address (RAM) into a Register (high-speed internal CPU storage).
- Process: The ALU (Arithmetic Logic Unit) performs the operation (ADD, SUB, etc.) using the data held in the registers.
- Store: The result is then moved from the register back to a specific memory address in the RAM.
This low-level control allows for extreme performance optimization and a deeper understanding of how software commands physically translate into electrical pulses and logic gate states.
To compile the C files with inline Assembly in a Linux environment:
-
Compile: gcc filename.c -o output_name
-
Execute: ./output_name
- Inline Assembly Basics: Moving data between C variables and registers.
- Arithmetic Logic: Implementing sum/subtraction directly in the ALU.
- Control Flow: Implementing loops and conditional jumps (JUMP NZ).
- Memory Management: Direct pointer manipulation via ASM.
This repository reflects my analytical perspective on complex systems. Part of my academic path in Computer Engineering.