mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-04-12 18:40:23 +08:00
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.
115 lines
2.3 KiB
Plaintext
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
|