| ## -------------------------------------------------------------------------- |
| ## |
| ## Copyright 1996-2009 The NASM Authors - All Rights Reserved |
| ## See the file AUTHORS included with the NASM distribution for |
| ## the specific copyright holders. |
| ## |
| ## Redistribution and use in source and binary forms, with or without |
| ## modification, are permitted provided that the following |
| ## conditions are met: |
| ## |
| ## * Redistributions of source code must retain the above copyright |
| ## notice, this list of conditions and the following disclaimer. |
| ## * Redistributions in binary form must reproduce the above |
| ## copyright notice, this list of conditions and the following |
| ## disclaimer in the documentation and/or other materials provided |
| ## with the distribution. |
| ## |
| ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
| ## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
| ## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| ## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| ## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| ## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| ## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| ## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| ## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| ## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| ## |
| ## -------------------------------------------------------------------------- |
| |
| # |
| # 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[, token flag] |
| # |
| # 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. |
| # |
| # If 'token flag' is present, this value will be assigned to tokflag field in |
| # 'struct tokendata tokendata[]' table. Token flag can be used for specifying |
| # special usage of corresponding register. E.g. opmask registers can be either |
| # enclosed by curly braces or standalone operand depending on the usage. |
| # |
| |
| # 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 REG8NA reg8,reg8_rex 3 |
| bh REG_HIGH reg8 7 |
| bx REG16NA reg16 3 |
| ebx REG32NA reg32 3 |
| rbx REG64NA 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 REG8NA reg8_rex 4 |
| sp REG16NA reg16 4 |
| esp REG32NA reg32 4 |
| rsp REG64NA reg64 4 |
| bpl REG8NA reg8_rex 5 |
| bp REG16NA reg16 5 |
| ebp REG32NA reg32 5 |
| rbp REG64NA reg64 5 |
| sil REG8NA reg8_rex 6 |
| si REG16NA reg16 6 |
| esi REG32NA reg32 6 |
| rsi REG64NA reg64 6 |
| dil REG8NA reg8_rex 7 |
| di REG16NA reg16 7 |
| edi REG32NA reg32 7 |
| rdi REG64NA reg64 7 |
| r8-15b REG8NA reg8_rex 8 |
| r8-15w REG16NA reg16 8 |
| r8-15d REG32NA reg32 8 |
| r8-15 REG64NA reg64 8 |
| |
| # Segment registers |
| es REG_ES sreg 0 |
| cs REG_CS sreg 1 |
| ss REG_SS sreg 2 |
| ds REG_DS sreg 3 |
| fs REG_FS sreg 4 |
| gs REG_GS 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 XMM0 xmmreg 0 |
| xmm1-15 XMM_L16 xmmreg 1 |
| xmm16-31 XMMREG xmmreg 16 |
| |
| # AVX registers |
| ymm0 YMM0 ymmreg 0 |
| ymm1-15 YMM_L16 ymmreg 1 |
| ymm16-31 YMMREG ymmreg 16 |
| |
| # AVX512 registers |
| zmm0 ZMM0 zmmreg 0 |
| zmm1-15 ZMM_L16 zmmreg 1 |
| zmm16-31 ZMMREG zmmreg 16 |
| |
| # Opmask registers |
| k0 OPMASK0 opmaskreg 0 |
| k1-7 OPMASKREG opmaskreg 1 TFLAG_BRC_OPT |
| |
| # Bounds registers |
| bnd0-3 BNDREG bndreg 0 |