# ISA

What is an ISA?

An ISA (**Instruction Set Architecture**) is a set of instructions that a CPU can execute, defining how software interacts with the hardware, determing what a CPU can do and how it does it.

## Key Components of an ISA:

1. **Instruction Set**:
   * A collection of all the machine language instructions that a processor can execute. These include arithmetic operations (like add, subtract), data transfer instructions (like load, store), and control flow instructions (like jump, branch).
2. **Data Types**:
   * The types of data the CPU can handle, such as integers, floating-point numbers, and characters.
3. [Registers](https://bata-mladen.gitbook.io/bata-mladen/notes/computer-concepts/isa/registers):
   * Small, fast storage locations within the CPU that hold data temporarily during processing. The ISA defines the number and types of registers available.
4. **Addressing Modes**:
   * The methods by which instructions access data in memory. Common modes include direct, indirect, and indexed addressing.
5. **Memory Architecture**:
   * Defines how memory is organized, accessed, and managed by the CPU. This includes concepts like memory segmentation, paging, and virtual memory.

## Examples of ISA

* [x86](https://bata-mladen.gitbook.io/bata-mladen/notes/computer-concepts/isa/x86)
* [ARM](https://bata-mladen.gitbook.io/bata-mladen/notes/computer-concepts/isa/arm)
