![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Project image.png)
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Assembly toolkit example.png)
The contents of this repository are organized by topics related to Assembly language. Each topic is identified by a number and a name in the source tree. Below each topic, you will find descriptions, each accompanied by a button that redirects you to its content.
In the opcode section, we discuss the smallest unit of a computer program, which, when combined with other units, forms a complete program that can be executed directly by the CPU of our computer.
You can click here to be redirected to the Opcodes section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Opcodes dir.png)
Here, we will explore in detail what registers are and how they work. The register bank is a key component in modern CPU designs, enabling us to manage data, make system calls, operate in memory segments, and more.
You can click here to be redirected to the Registers section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Registers dir.png)
The memory segments are a virtual division that every program running on a machine must have. The segments have their own roles, such as storing read-only data, storing uninitialized data, storing the program instructions and so on.
You can click here to be redirected to the Memory segments section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Memory segments dir.png)
System calls are interfaces established by the operating system that enable user-space programs to request and manipulate resources that are exclusively accessible by the kernel. In this section, we will explore how these calls work and how to execute them using registers.
You can click here to be redirected to the System calls section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/System calls dir.png)
Jumps are essential components of modern computers. Instructions that perform jumps enable programs to create conditional structures, such as loops, if/else statements, and switches. These jumps are typically based on the values of the RFLAGS register. This section will explain everything you need to know about this important register and how to execute jumps effectively.
You can click here to be redirected to the Jumps section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Jumps dir.png)
The primary function of a computer is to perform calculations. This section will cover the basics of arithmetic operations in low-level programming, including addition, multiplication, division, and subtraction.
You can click here to be redirected to the Arithmetic section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Arithmetic dir.png)
The stack is the most frequently used memory segment during program execution. In languages such as C, all variables declared within a function are stored in this segment. Additionally, the stack manages function calls, arguments, and other related operations.
You can click here to be redirected to the Stack section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Stack dir.png)
In this section, we will explore how to create and utilize functions and procedures in low-level programming. By mastering these concepts, you will gain a deeper understanding of their implementation in languages like C and other compiled languages.
You can click here to be redirected to the Functions section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Functions dir.png)
The arrays section provides information on creating and manipulating arrays in low-level programming. It explains memory allocation and the calculations required to access array indices. As fundamental data structures, arrays are essential for software development.
You can click here to be redirected to the Arrays section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Arrays dir.png)
Macros are a set of instructions that affect the assembler's preprocessor. With macros, you can assign values to symbols, create blocks of instructions, and invoke them like functions in C, among other capabilities.
You can click here to be redirected to the Macros section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Macros dir.png)
The solutions section consists of assembly source code files for the NASM assembler, which replicate functionalities from C programming language functions. This provides insight into how software is constructed from a low-level perspective. Examples of functions created include strlen(), strcmp(), and atoi(), among others.
You can click here to be redirected to the Solutions section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Solutions dir.png)
This section is basically a list of opcodes that have not been introduced by any section of the repository, however, they can make a difference while we are writing some bits.
This section lists opcodes that have not been introduced elsewhere in the repository, yet they can significantly impact our bit writing process.
You can click here to be redirected to the Useful opcodes section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Useful opcodes dir.png)
Despite being two distinct languages, Assembly and C can collaborate effectively, leveraging their unique strengths to address tasks that benefit from both technologies.
You can click here to be redirected to the Assembly-C interoperability section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Assembly-C interoperability dir.png)
Position Independent Code (PIC) is advantageous because it does not rely on fixed memory addresses for reading, writing data, or jumping to procedures. In contrast, Position Dependent software can cause issues during loading or linking with a C program.
You can click here to be redirected to the PIC section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/PIC dir.png)
Like C, JavaScript, and Python, Assembly language also supports a form of callbacks that can help create more flexible programs. By moving a memory address into a register, this address can be used for jumping to or calling its associated function.
You can click here to be redirected to the Callbacks section.
![](/Romulo-Peres/Assembly-Toolkit/raw/main/assets/Callbacks dir.png)