2002-06-06 10:41:20 +08:00
|
|
|
# $Id$
|
|
|
|
#
|
|
|
|
# List of registers and their classes; classes are defined in nasm.h
|
|
|
|
#
|
2007-04-16 07:12:17 +08:00
|
|
|
# The columns are:
|
|
|
|
#
|
|
|
|
# register name, assembler class, disassembler class(es),
|
|
|
|
# NASM register number, x86 register number
|
|
|
|
#
|
|
|
|
# If the register name ends in *, then it is repeated 8 times
|
|
|
|
# with the following changes:
|
|
|
|
# - a numerical tail to register number is incremented
|
|
|
|
# - the NASM and x86 register numbers are incremented
|
|
|
|
#
|
|
|
|
# For 16-register register sets, two * lines are required.
|
2002-06-06 10:41:20 +08:00
|
|
|
#
|
|
|
|
|
2007-04-12 10:40:54 +08:00
|
|
|
# Legacy Registers
|
|
|
|
# 000-007 = 8-bit Registers
|
|
|
|
# 010-017 = 16-bit Registers
|
|
|
|
# 020-027 = 32-bit Registers
|
|
|
|
|
|
|
|
# System Registers
|
|
|
|
# 100-107 = Segment Registers
|
|
|
|
# 110-127 = Control Registers
|
|
|
|
# 130-147 = Debug Registers
|
|
|
|
# 150-167 = Test Registers
|
|
|
|
|
|
|
|
# Legacy Extended Registers
|
|
|
|
# 200-207 = FPU Registers
|
|
|
|
# 210-217 = MMX Registers
|
|
|
|
# 220-227 = XMM Registers (XMM0-XMM7)
|
|
|
|
|
|
|
|
# x64 Extended Registers
|
|
|
|
# 400-407 = 8-bit Extensions (SIL/DIL/BPL/SPL)
|
|
|
|
# 410-417 = 8-bit Registers (R8B-R15B)
|
|
|
|
# 420-427 = 16-bit Registers (R8W-R15W)
|
|
|
|
# 430-437 = 32-bit Registers (R8D-R15D)
|
|
|
|
# 440-457 = 64-bit Registers (RAX-RDI+R8-R15)
|
|
|
|
# 460-467 = XMM Extended Registers (XMM8-XMM15)
|
|
|
|
|
|
|
|
# Special Registers
|
|
|
|
# 0500 = RIP (for RIP-relative Addressing)
|
|
|
|
|
|
|
|
|
2002-06-06 10:41:20 +08:00
|
|
|
# General-purpose registers
|
2007-04-16 07:12:17 +08:00
|
|
|
al REG_AL reg8,reg8_rex 0000 0
|
|
|
|
ah REG8 reg8 0004 4
|
|
|
|
ax REG_AX reg16 0010 0
|
|
|
|
eax REG_EAX reg32 0020 0
|
|
|
|
rax REG_RAX reg64 0440 0
|
|
|
|
bl REG8 reg8,reg8_rex 0003 3
|
|
|
|
bh REG8 reg8 0007 7
|
|
|
|
bx REG16 reg16 0013 3
|
|
|
|
ebx REG32 reg32 0023 3
|
|
|
|
rbx REG64 reg64 0443 3
|
|
|
|
cl REG_CL reg8,reg8_rex 0001 1
|
|
|
|
ch REG8 reg8 0005 5
|
|
|
|
cx REG_CX reg16 0011 1
|
|
|
|
ecx REG_ECX reg32 0021 1
|
|
|
|
rcx REG_RCX reg64 0441 1
|
|
|
|
dl REG_DL reg8,reg8_rex 0002 2
|
|
|
|
dh REG8 reg8 0006 6
|
|
|
|
dx REG_DX reg16 0012 2
|
|
|
|
edx REG_EDX reg32 0022 2
|
|
|
|
rdx REG_RDX reg64 0442 2
|
|
|
|
spl REG8 reg8_rex 0404 4
|
|
|
|
sp REG16 reg16 0014 4
|
|
|
|
esp REG32 reg32 0024 4
|
|
|
|
rsp REG64 reg64 0444 4
|
|
|
|
bpl REG8 reg8_rex 0405 5
|
|
|
|
bp REG16 reg16 0015 5
|
|
|
|
ebp REG32 reg32 0025 5
|
|
|
|
rbp REG64 reg64 0445 5
|
|
|
|
sil REG8 reg8_rex 0406 6
|
|
|
|
si REG16 reg16 0016 6
|
|
|
|
esi REG32 reg32 0026 6
|
|
|
|
rsi REG64 reg64 0446 6
|
|
|
|
dil REG8 reg8_rex 0407 7
|
|
|
|
di REG16 reg16 0017 7
|
|
|
|
edi REG32 reg32 0027 7
|
|
|
|
rdi REG64 reg64 0447 7
|
|
|
|
r8b REG8 reg8_rex 0410 8
|
|
|
|
r8w REG16 reg16 0420 8
|
|
|
|
r8d REG32 reg32 0430 8
|
|
|
|
r8 REG64 reg64 0450 8
|
|
|
|
r9b REG8 reg8_rex 0411 9
|
|
|
|
r9w REG16 reg16 0421 9
|
|
|
|
r9d REG32 reg32 0431 9
|
|
|
|
r9 REG64 reg64 0451 9
|
|
|
|
r10b REG8 reg8_rex 0412 10
|
|
|
|
r10w REG16 reg16 0422 10
|
|
|
|
r10d REG32 reg32 0432 10
|
|
|
|
r10 REG64 reg64 0452 10
|
|
|
|
r11b REG8 reg8_rex 0413 11
|
|
|
|
r11w REG16 reg16 0423 11
|
|
|
|
r11d REG32 reg32 0433 11
|
|
|
|
r11 REG64 reg64 0453 11
|
|
|
|
r12b REG8 reg8_rex 0414 12
|
|
|
|
r12w REG16 reg16 0424 12
|
|
|
|
r12d REG32 reg32 0434 12
|
|
|
|
r12 REG64 reg64 0454 12
|
|
|
|
r13b REG8 reg8_rex 0415 13
|
|
|
|
r13w REG16 reg16 0425 13
|
|
|
|
r13d REG32 reg32 0435 13
|
|
|
|
r13 REG64 reg64 0455 13
|
|
|
|
r14b REG8 reg8_rex 0416 14
|
|
|
|
r14w REG16 reg16 0426 14
|
|
|
|
r14d REG32 reg32 0436 14
|
|
|
|
r14 REG64 reg64 0456 14
|
|
|
|
r15b REG8 reg8_rex 0417 15
|
|
|
|
r15w REG16 reg16 0427 15
|
|
|
|
r15d REG32 reg32 0437 15
|
|
|
|
r15 REG64 reg64 0457 15
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# Segment registers
|
2007-04-16 07:12:17 +08:00
|
|
|
cs REG_CS sreg 0101 1
|
|
|
|
ds REG_DESS sreg 0103 3
|
|
|
|
es REG_DESS sreg 0100 0
|
|
|
|
ss REG_DESS sreg 0102 2
|
|
|
|
fs REG_FSGS sreg 0104 4
|
|
|
|
gs REG_FSGS sreg 0105 5
|
|
|
|
segr6 REG_SEG67 sreg 0106 6
|
|
|
|
segr7 REG_SEG67 sreg 0107 7
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# Control registers
|
2007-04-16 07:12:17 +08:00
|
|
|
cr0* REG_CREG creg 0110 0
|
|
|
|
cr8* REG_CREG creg 0120 8
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# Debug registers
|
2007-04-16 07:12:17 +08:00
|
|
|
dr0* REG_DREG dreg 0130 0
|
|
|
|
dr8* REG_DREG dreg 0140 8
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# Test registers
|
2007-04-16 07:12:17 +08:00
|
|
|
tr0* REG_TREG treg 0150 0
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# Floating-point registers
|
2007-04-16 07:12:17 +08:00
|
|
|
st0 FPU0 fpureg 0200 0
|
|
|
|
st1 FPUREG fpureg 0201 1
|
|
|
|
st2 FPUREG fpureg 0202 2
|
|
|
|
st3 FPUREG fpureg 0203 3
|
|
|
|
st4 FPUREG fpureg 0204 4
|
|
|
|
st5 FPUREG fpureg 0205 5
|
|
|
|
st6 FPUREG fpureg 0206 6
|
|
|
|
st7 FPUREG fpureg 0207 7
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# MMX registers
|
2007-04-16 07:12:17 +08:00
|
|
|
mm0* MMXREG mmxreg 0220 0
|
2002-06-06 10:41:20 +08:00
|
|
|
|
|
|
|
# SSE registers
|
2007-04-16 07:12:17 +08:00
|
|
|
xmm0* XMMREG xmmreg 0240 0
|
|
|
|
xmm8* XMMREG xmmreg 0460 8
|
2007-04-12 10:40:54 +08:00
|
|
|
|
|
|
|
# Special registers
|
2007-04-16 07:12:17 +08:00
|
|
|
rip REG_RIP ripreg 0500
|