As I have discussed in my previous post here, every engineer should break up the components. Moving further IA-32 supports the following register types
a) General Purpose Register
b) Floating Point Registers
c) MMX Registers
d) XMM Registers
e) Control Registers
f) Memory Management Registers
g) Debug Registers
h) Memory Type Range Registers
i) Machine Specific Registers
j) Machine Check Registers
k) Performance Monitoring Counters
Wow!, they are quite a number of them which are very important to understand and which I will be covering in detail .
Following list shows the number of registers of each type that IA-32 supports
- 8 -32bit General purpose registers
- 6 -16bit Segment registers
- 1 – 32 bit Eflags register
- 1 – 32 bit instruction pointer
- 8 Floating Point Data Registers
- 1 Floating point unit control register
- 1 Floating point unit Instruction Pointer register
- 1 Floating point unit operand pointer register
- 1 Tag register
- 1 Floating point unit opcode register.
- 8 MMX registers
- 8 XMM registers
- 232 -1 Address space.
- 5 Control registers
- 3 Memory management Registers ( GDTR, LDTR and IDTR )
- 8 Debug registers
Below diagram shows the interaction between the layers , I have only considered Basic execution registers.