3 # List of registers and their classes; classes are defined in nasm.h
7 # register name, assembler class, disassembler class(es),
8 # NASM register number, x86 register number
10 # If the register name ends in +, then it is repeated 8 times
11 # with the following changes:
12 # - a numerical tail to register number is incremented
13 # - the NASM and x86 register numbers are incremented
15 # For 16-register register sets, two + lines are required.
19 # 000-007 = 8-bit Registers
20 # 010-017 = 16-bit Registers
21 # 020-027 = 32-bit Registers
24 # 100-107 = Segment Registers
25 # 110-127 = Control Registers
26 # 130-147 = Debug Registers
27 # 150-167 = Test Registers
29 # Legacy Extended Registers
30 # 200-207 = FPU Registers
31 # 210-217 = MMX Registers
32 # 220-227 = XMM Registers (XMM0-XMM7)
34 # x64 Extended Registers
35 # 404-407 = 8-bit Extensions (SIL/DIL/BPL/SPL)
36 # 410-417 = 8-bit Registers (R8B-R15B)
37 # 420-427 = 16-bit Registers (R8W-R15W)
38 # 430-437 = 32-bit Registers (R8D-R15D)
39 # 440-457 = 64-bit Registers (RAX-RDI+R8-R15)
40 # 460-467 = XMM Extended Registers (XMM8-XMM15)
43 # 0500 = RIP (for RIP-relative Addressing)
46 # General-purpose registers
47 al REG_AL reg8
,reg8_rex
0000 0
49 ax REG_AX reg16
0010 0
50 eax REG_EAX reg32
0020 0
51 rax REG_RAX reg64
0440 0
52 bl REG8 reg8
,reg8_rex
0003 3
55 ebx REG32 reg32
0023 3
56 rbx REG64 reg64
0443 3
57 cl REG_CL reg8
,reg8_rex
0001 1
59 cx REG_CX reg16
0011 1
60 ecx REG_ECX reg32
0021 1
61 rcx REG_RCX reg64
0441 1
62 dl REG_DL reg8
,reg8_rex
0002 2
64 dx REG_DX reg16
0012 2
65 edx REG_EDX reg32
0022 2
66 rdx REG_RDX reg64
0442 2
67 spl REG8 reg8_rex
0404 4
69 esp REG32 reg32
0024 4
70 rsp REG64 reg64
0444 4
71 bpl REG8 reg8_rex
0405 5
73 ebp REG32 reg32
0025 5
74 rbp REG64 reg64
0445 5
75 sil REG8 reg8_rex
0406 6
77 esi REG32 reg32
0026 6
78 rsi REG64 reg64
0446 6
79 dil REG8 reg8_rex
0407 7
81 edi REG32 reg32
0027 7
82 rdi REG64 reg64
0447 7
83 r8b REG8 reg8_rex
0410 8
84 r8w REG16 reg16
0420 8
85 r8d REG32 reg32
0430 8
87 r9b REG8 reg8_rex
0411 9
88 r9w REG16 reg16
0421 9
89 r9d REG32 reg32
0431 9
91 r10b REG8 reg8_rex
0412 10
92 r10w REG16 reg16
0422 10
93 r10d REG32 reg32
0432 10
94 r10 REG64 reg64
0452 10
95 r11b REG8 reg8_rex
0413 11
96 r11w REG16 reg16
0423 11
97 r11d REG32 reg32
0433 11
98 r11 REG64 reg64
0453 11
99 r12b REG8 reg8_rex
0414 12
100 r12w REG16 reg16
0424 12
101 r12d REG32 reg32
0434 12
102 r12 REG64 reg64
0454 12
103 r13b REG8 reg8_rex
0415 13
104 r13w REG16 reg16
0425 13
105 r13d REG32 reg32
0435 13
106 r13 REG64 reg64
0455 13
107 r14b REG8 reg8_rex
0416 14
108 r14w REG16 reg16
0426 14
109 r14d REG32 reg32
0436 14
110 r14 REG64 reg64
0456 14
111 r15b REG8 reg8_rex
0417 15
112 r15w REG16 reg16
0427 15
113 r15d REG32 reg32
0437 15
114 r15 REG64 reg64
0457 15
117 cs REG_CS sreg
0101 1
118 ds REG_DESS sreg
0103 3
119 es REG_DESS sreg
0100 0
120 ss REG_DESS sreg
0102 2
121 fs REG_FSGS sreg
0104 4
122 gs REG_FSGS sreg
0105 5
123 segr6 REG_SEG67 sreg
0106 6
124 segr7 REG_SEG67 sreg
0107 7
127 cr0
+ REG_CREG creg
0110 0
128 cr8
+ REG_CREG creg
0120 8
131 dr0
+ REG_DREG dreg
0130 0
132 dr8
+ REG_DREG dreg
0140 8
135 tr0
+ REG_TREG treg
0150 0
137 # Floating-point registers
138 st0 FPU0 fpureg
0200 0
139 st1 FPUREG fpureg
0201 1
140 st2 FPUREG fpureg
0202 2
141 st3 FPUREG fpureg
0203 3
142 st4 FPUREG fpureg
0204 4
143 st5 FPUREG fpureg
0205 5
144 st6 FPUREG fpureg
0206 6
145 st7 FPUREG fpureg
0207 7
148 mm0
+ MMXREG mmxreg
0220 0
151 xmm0
+ XMMREG xmmreg
0240 0
152 xmm8
+ XMMREG xmmreg
0460 8
155 rip REG_RIP ripreg
0500 0