CPU Registers x86: Difference between revisions

Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content deleted Content added
m Segment Registers ~> Protected Mode Registers (wrong caption)
Added 64-bit registers, the EFER register and filled some "reserved" gaps instead of not listing the bits.
Line 3: Line 3:
{| {{wikitable}}
{| {{wikitable}}
|-
|-
! 64 bit
! 32 bit
! 32 bit
! 16 bit
! 16 bit
! 8 high bit
! colspan="2" | 8 bit
! 8 low bit
! description
! description
|-
|-
! colspan="3" |
! high<sup>&dagger;</sup>
! low
!
|-
| rax
| eax
| eax
| ax
| ax
Line 15: Line 21:
| accumulator
| accumulator
|-
|-
| rbx
| ebx
| ebx
| bx
| bx
Line 21: Line 28:
| base
| base
|-
|-
| rcx
| ecx
| ecx
| cx
| cx
Line 27: Line 35:
| counter
| counter
|-
|-
| rdx
| edx
| edx
| dx
| dx
Line 34: Line 43:
|-
|-
|}
|}

<sup>&dagger;</sup>The 8-bit high registers cannot be accessed when a REX.W prefix is used in 64-bit mode.


==Segment Registers==
==Segment Registers==
Line 60: Line 71:
{| {{wikitable}}
{| {{wikitable}}
|-
|-
! 64 bit
! 32 bit
! 32 bit
! 16 bit
! 16 bit
! description
! description
|-
|-
| rsi
| esi
| esi
| si
| si
| source index
| source index
|-
|-
| rdi
| edi
| edi
| di
| di
Line 78: Line 92:
{| {{wikitable}}
{| {{wikitable}}
|-
|-
! 64 bit
! 32 bit
! 32 bit
! 16 bit
! 16 bit
! description
! description
|-
|-
| rbp
| ebp
| ebp
| bp
| bp
| base pointer
| base pointer
|-
|-
| rsp
| esp
| esp
| sp
| sp
| stack pointer
| stack pointer
|-
|-
| rip
| eip
| eip
|
| ip
| instruction pointer
| instruction pointer
|-
|-
|}
|}


==EFLAGS Register==
==FLAGS Register==


{| {{wikitable}}
{| {{wikitable}}
Line 103: Line 121:
! label
! label
! description
! description
|-
! colspan="3" | FLAGS
|-
|-
| 0
| 0
| cf
| cf
| carry flag
| carry flag
|-
| 1
|
| reserved
|-
|-
| 2
| 2
| pf
| pf
| parity flag
| parity flag
|-
| 3
|
| reserved
|-
|-
| 4
| 4
| af
| af
| auxiliary flag
| auxiliary flag
|-
| 5
|
| reserved
|-
|-
| 6
| 6
Line 147: Line 179:
| nt
| nt
| nested task flag
| nested task flag
|-
| 15
|
| reserved
|-
! colspan="3" | EFLAGS
|-
|-
| 16
| 16
Line 172: Line 210:
| id flag
| id flag
|-
|-
| 22-31
|
| reserved
|-
! colspan="3" | RFLAGS
|-
| 22-63
|
| reserved
|}
|}


Line 207: Line 254:
| ne
| ne
| numeric error
| numeric error
|-
| 6-15
|
| reserved
|-
|-
| 16
| 16
| wp
| wp
| write protect
| write protect
|-
| 17
|
| reserved
|-
|-
| 18
| 18
| am
| am
| alignment mask
| alignment mask
|-
| 19-28
|
| reserved
|-
|-
| 29
| 29
Line 316: Line 375:
| osxmmexcpt
| osxmmexcpt
| os support for unmasked simd floating point exceptions
| os support for unmasked simd floating point exceptions
|-
| 11
|
| reserved
|-
| 12
|
| reserved
|-
|-
| 13
| 13
Line 324: Line 391:
| smxe
| smxe
| safer mode extensions enable
| safer mode extensions enable
|-
| 15
|
| reserved
|-
| 16
|
| reserved
|-
|-
| 17
| 17
Line 332: Line 407:
| osxsave
| osxsave
| xsave and processor extended states enable
| xsave and processor extended states enable
|-
| 19
|
| reserved
|-
|-
| 20
| 20
Line 341: Line 420:
| supervisor mode access protection enable
| supervisor mode access protection enable
|-
|-
| 22
| pke
| protection key enable
|-
| 23-31
|
| reserved
|}
|}

====EFER====
{| {{wikitable}}
|-
! bit
! name
! description
|-
| 0
| sce
| system call extensions
|-
| 1-7
|
| reserved
|-
| 8
| lme
| long mode enable
|-
| 9
|
| reserved
|-
| 10
| lma
| long mode active
|-
| 11
| nxe
| no-execute enable
|-
| 12
| svme
| secure virtual machine enable
|-
| 13
| lmsle
| long mode segment limit enable
|-
| 14
| ffxsr
| fast fxsave/fxrstor
|-
| 15
| tce
| translation cache extension
|-
| 16-63
|
| reserved
|}



==Debug Registers==
==Debug Registers==