Register Name |
Types |
Details |
1. General Purpose Registers |
RAX, RBX, RCX, RDX, RDI, RSI, RSP, RBP, R8 through R15. |
RAX(64 bit)accumulator |
Can be read as EAX(32 bit), AX(16 bit), AH(8 bit), AL(8 bit). Each register is divided into 16bit, 8bits parts
Usage:
a. Stores intermidiate sum,subtract,divide within the function
b. {Return value} rax stored return value of function. Larger return types like structs are returned using the stack.
c. {Division Operation} rax = quotient, rdx = reminder
|
RBX |
Memory pointer, base register |
RSP(stack pointer) |
points to head of stack |
RBP(base pointer) |
points to base of stack |
AVX(Advanced Vector Extensions) |
64 byte Registor present in Intel and AMD |
EDI/RDI, RSI, RDX, RCX, R8, R9 |
Stores 1st 6 arguments to function.
If there are more than 6 parameters, then the program’s stack is used to pass in
additional parameters to the function
- RDI = 1st argument
- RSI = 2nd argument. Also used for String instructions
- RDX = 3rd argument. Also used for Divide & Multiply
- RCX = 4th argument. Also used for loop counter
- R8 = 5th argument
- R9 = 6th argument
|
|
2. Segment Registers(16 bit) |
Holds segment addresses. Segment register initialization and management is
normally handled by the operating system |
Type |
desc |
CS/CODE SEGMENT |
Contains address of the code segment of the currently executing instruction |
DS/DATA SEGMENT |
Contains address of that data segment which belongs to Current Program |
STACK SEGMENT/SS |
stores memory address inside stack that CPU is using at this point of time |
a spare segment that may be used for specifying a location in memory |
FS, GS |
They are both additional segments with no specific job or specialty |
|
3. Special Purpose |
|
name |
desc |
IP(Instruction Pointer) / PC(Program Counter) RIP/EIP |
Holds offset address of the next machine instruction to be executed in
the current code segment. IP can neither read from nor written directly by user. |
Program Status Word / PSW (16 bit) {Tells about status of Processor} |
Usage? Contains bits which stores status or result of operations.
Example: Bits of PSW tells sign of previous operation. Eg: previous operation produced -ve,+ve or 0 result.
Bits 7(unused), 9(used): 3(control flags), 6(status flags). Control Flags: Set/Reset by programmer
a. DF(Direction Flag): Controls direction of operation of string operation. (DF=0 Ascending order DF=1 Descending order)
b. IF(Interrupt Flag): controls the interrupt operation in 8086µP. (IF=0 Disable interrupt IF=1 Enable interrupt)
c. TF(Trap Flag): Controls the operation of the microprocessor. (TF=0 Normal operation TF=1 Single Step operation)
|
Status flags |
Set/reset depending on the results of some arithmetic or logical operations
d. CF (Carry Flag): is set (CF=1) if there is a carry out of the MSB position resulting from an addition operation or subtraction.
e. AF (Auxiliary Carry Flag) AF is set if there is a carry out of bit 3 resulting from an addition operation.
f. SF (Sign Flag) set to 1 when result is negative. When result is positive it is set to 0.
g. ZF (Zero Flag) is set (ZF=1) when result of an arithmetic or logical operation is zero. For non-zero result this flag is reset (ZF=0).
h. PF (Parity Flag) this flag is set to 1 when there is even number of one bits in result, and to 0 when there is odd number of one bits.
i. OF (Overflow Flag) set to 1 when there is a signed overflow. For example, when you multiply FFH by 11H (result is not one byte)
|
|
XMM Registers |
|
These support: 64-bit and 32-bit floating-point operations and Single Instruction Multiple Data (SIMD) instructions.
The SIMD instructions allow a single instruction to be applied simultaneously to multiple data items. This results in significant performance increase
|
RFLAGS Register (64 Bits) |
|
Each bit representing: status of results of logical and arithmetic operations, System control bits(used by OS)
Bit Name Symbol Use
0 Carry Flag CF Status
1 Reserved 1
2 Parity Flag PF Status
3 Reserved 0
4 Auxiliary Carry Flag AF Status
5 Reserved 0
6 Zero Flag ZF Status
7 Sign Flag SF Status
8 Trap Flag TF System
9 Interrupt Enable Flag IF System
10 Direction Flag DF Control
11 Overflow Flag OF Status
12 I/O Privilege Level Bit 0 IOPL System
13 I/O Privilege Level Bit 1 IOPL System
14 Nested Task NT System
15 Reserved 0
16 Resume Flag RF System
17 Virtual 8086 Mode VM System
18 Alignment Check AC System
19 Virtual Interrupt Flag VIF System
20 Virtual Interrupt Pending VIP System
21 ID Flag ID System
22 - 31 Reserved 0
|