×
Create a new article
Write your page title here:
We currently have 177 articles on Open Eggbert. Type your article name above or click on one of the titles below and start writing!



Open Eggbert
177Articles
in:
Revision as of 18:33, 9 November 2024 by Robertvokac (talk | contribs)

Types of registers based on the data length

64-bit registers - These do not exist in the i586 instruction set. They exist only in the 64-bit processors. Their names start with the R character.

32-bit registers - Their names start with the E character.

16-bit registers

8-bit registers

Categories of registers

  • General registers
  • Control registers
  • Segment registers

Categories of general registers

  • Data registers
  • Pointer registers
  • Index registers

Data registers

There are four data 32-bit data registers: EAX, EBX, ECX, EDX

  • Lower halves of the 32-bit registers can be used as four 16-bit data registers: AX, BX, CX and DX.
  • Lower and higher halves of the above-mentioned four 16-bit registers can be used as eight 8-bit data registers: AH, AL, BH, BL, CH, CL, DH, and DL.

Regarding the 64-bit processors: There are also four data 64-bit data registers: RAX, RBX, RCX, RDX

Pointer registers

There are three data 32-bit pointer registers: EIP, ESP, EBP

Their 16-bit equivalent are IP, SP, BP

Instruction Pointer (EIP)

The 32-bit **EIP** register holds the address of the next instruction to be executed. When combined with the **CS** register (as **CS:EIP**), it provides the full address of the current instruction within the code segment.

  • The **CS:EIP** pair gives the logical address pointing to the instruction that the processor will execute next.

Stack Pointer (ESP)

The 32-bit **ESP** register holds the offset within the stack. When used with the **SS** register (**SS:ESP**), it refers to the current location in the stack.

  • The **SS:ESP** pair provides the complete address within the stack segment.

Base Pointer (EBP)

The 32-bit **EBP** register helps in referencing the parameters passed to a subroutine. The address from the **SS** register is combined with the offset in **EBP** to locate the function parameters. **EBP** can also be used with **ESI** and **EDI** for special addressing.

  • The **SS:EBP** pair points to the base of the current stack frame, facilitating access to function arguments and local variables.

External links

https://wiki.osdev.org/CPU_Registers_x86