nasm/regs.dat
H. Peter Anvin 3df97a7270 Get rid of magic open-coded "register numbers"
Get rid of magic open-coded register numbers.  We now keep track of
a total of three different kinds of register numbers: the register
enumeration (regs.h), the x86 register value, and the register flags.
That has all the information we need.

Additionally, do massive revamping of the EA generation code and the
REX generation logic.
2007-05-30 03:25:21 +00:00

115 lines
2.3 KiB
Plaintext

# $Id$
#
# List of registers and their classes; classes are defined in nasm.h
#
# The columns are:
#
# register name, assembler class, disassembler class(es), x86 register number
#
# If the register name ends in two numbers separated by a dash, then it is
# repeated as many times as indicated, and the register number is
# updated with it.
#
# General-purpose registers
al REG_AL reg8,reg8_rex 0
ah REG_HIGH reg8 4
ax REG_AX reg16 0
eax REG_EAX reg32 0
rax REG_RAX reg64 0
bl REG8 reg8,reg8_rex 3
bh REG_HIGH reg8 7
bx REG16 reg16 3
ebx REG32 reg32 3
rbx REG64 reg64 3
cl REG_CL reg8,reg8_rex 1
ch REG_HIGH reg8 5
cx REG_CX reg16 1
ecx REG_ECX reg32 1
rcx REG_RCX reg64 1
dl REG_DL reg8,reg8_rex 2
dh REG_HIGH reg8 6
dx REG_DX reg16 2
edx REG_EDX reg32 2
rdx REG_RDX reg64 2
spl REG8 reg8_rex 4
sp REG16 reg16 4
esp REG32 reg32 4
rsp REG64 reg64 4
bpl REG8 reg8_rex 5
bp REG16 reg16 5
ebp REG32 reg32 5
rbp REG64 reg64 5
sil REG8 reg8_rex 6
si REG16 reg16 6
esi REG32 reg32 6
rsi REG64 reg64 6
dil REG8 reg8_rex 7
di REG16 reg16 7
edi REG32 reg32 7
rdi REG64 reg64 7
r8b REG8 reg8_rex 8
r8w REG16 reg16 8
r8d REG32 reg32 8
r8 REG64 reg64 8
r9b REG8 reg8_rex 9
r9w REG16 reg16 9
r9d REG32 reg32 9
r9 REG64 reg64 9
r10b REG8 reg8_rex 10
r10w REG16 reg16 10
r10d REG32 reg32 10
r10 REG64 reg64 10
r11b REG8 reg8_rex 11
r11w REG16 reg16 11
r11d REG32 reg32 11
r11 REG64 reg64 11
r12b REG8 reg8_rex 12
r12w REG16 reg16 12
r12d REG32 reg32 12
r12 REG64 reg64 12
r13b REG8 reg8_rex 13
r13w REG16 reg16 13
r13d REG32 reg32 13
r13 REG64 reg64 13
r14b REG8 reg8_rex 14
r14w REG16 reg16 14
r14d REG32 reg32 14
r14 REG64 reg64 14
r15b REG8 reg8_rex 15
r15w REG16 reg16 15
r15d REG32 reg32 15
r15 REG64 reg64 15
# Segment registers
cs REG_CS sreg 1
ds REG_DESS sreg 3
es REG_DESS sreg 0
ss REG_DESS sreg 2
fs REG_FSGS sreg 4
gs REG_FSGS sreg 5
segr6-7 REG_SEG67 sreg 6
# Control registers
cr0-15 REG_CREG creg 0
# Debug registers
dr0-15 REG_DREG dreg 0
# Test registers
tr0-7 REG_TREG treg 0
# Floating-point registers
st0 FPU0 fpureg 0
st1-7 FPUREG fpureg 1
# MMX registers
mm0-7 MMXREG mmxreg 0
# SSE registers
xmm0-15 XMMREG xmmreg 0
# Special registers
eip REG_EIP eipreg 0
rip REG_RIP ripreg 0