1 /* names.c included source file defining instruction and register
2 * names for the Netwide [Dis]Assembler
4 * The Netwide Assembler is copyright (C) 1996 Simon Tatham and
5 * Julian Hall. All rights reserved. The software is
6 * redistributable under the licence given in the file "Licence"
7 * distributed in the NASM archive.
10 static char *reg_names
[] = { /* register names, as strings */
11 "\0", "ah", "al", "ax", "bh", "bl", "bp", "bx", "ch", "cl",
12 "cr0", "cr2", "cr3", "cr4", "cs", "cx", "dh", "di", "dl", "dr0",
13 "dr1", "dr2", "dr3", "dr6", "dr7", "ds", "dx", "eax", "ebp",
14 "ebx", "ecx", "edi", "edx", "es", "esi", "esp", "fs", "gs",
15 "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7", "si",
16 "sp", "ss", "st0", "st1", "st2", "st3", "st4", "st5", "st6",
17 "st7", "tr3", "tr4", "tr5", "tr6", "tr7"
20 static char *insn_names
[] = { /* instruction names, as strings */
21 "aaa", "aad", "aam", "aas", "adc", "add", "and", "arpl",
22 "bound", "bsf", "bsr", "bswap", "bt", "btc", "btr", "bts",
23 "call", "cbw", "cdq", "clc", "cld", "cli", "clts", "cmc", "cmp",
24 "cmpsb", "cmpsd", "cmpsw", "cmpxchg", "cmpxchg8b", "cpuid",
25 "cwd", "cwde", "daa", "das", "db", "dd", "dec", "div", "dq",
26 "dt", "dw", "emms", "enter", "equ", "f2xm1", "fabs", "fadd",
27 "faddp", "fbld", "fbstp", "fchs", "fclex", "fcmovb", "fcmovbe",
28 "fcmove", "fcmovnb", "fcmovnbe", "fcmovne", "fcmovnu", "fcmovu",
29 "fcom", "fcomi", "fcomip", "fcomp", "fcompp", "fcos", "fdecstp",
30 "fdisi", "fdiv", "fdivp", "fdivr", "fdivrp", "feni", "ffree",
31 "fiadd", "ficom", "ficomp", "fidiv", "fidivr", "fild", "fimul",
32 "fincstp", "finit", "fist", "fistp", "fisub", "fisubr", "fld",
33 "fld1", "fldcw", "fldenv", "fldl2e", "fldl2t", "fldlg2",
34 "fldln2", "fldpi", "fldz", "fmul", "fmulp", "fnop", "fpatan",
35 "fprem", "fprem1", "fptan", "frndint", "frstor", "fsave",
36 "fscale", "fsetpm", "fsin", "fsincos", "fsqrt", "fst", "fstcw",
37 "fstenv", "fstp", "fstsw", "fsub", "fsubp", "fsubr", "fsubrp",
38 "ftst", "fucom", "fucomi", "fucomip", "fucomp", "fucompp",
39 "fxam", "fxch", "fxtract", "fyl2x", "fyl2xp1", "hlt", "icebp",
40 "idiv", "imul", "in", "inc", "insb", "insd", "insw", "int",
41 "int1", "int01", "int3", "into", "invd", "invlpg", "iret",
42 "iretd", "iretw", "jcxz", "jecxz", "jmp", "lahf", "lar", "lds",
43 "lea", "leave", "les", "lfs", "lgdt", "lgs", "lidt", "lldt",
44 "lmsw", "loadall", "lodsb", "lodsd", "lodsw", "loop", "loope",
45 "loopne", "loopnz", "loopz", "lsl", "lss", "ltr", "mov", "movd",
46 "movq", "movsb", "movsd", "movsw", "movsx", "movzx", "mul",
47 "neg", "nop", "not", "or", "out", "outsb", "outsd", "outsw",
48 "packssdw", "packsswb", "packuswb", "paddb", "paddd", "paddsb",
49 "paddsw", "paddusb", "paddusw", "paddw", "pand", "pandn",
50 "pcmpeqb", "pcmpeqd", "pcmpeqw", "pcmpgtb", "pcmpgtd",
51 "pcmpgtw", "pmaddwd", "pmulhw", "pmullw", "pop", "popa",
52 "popad", "popaw", "popf", "popfd", "popfw", "por", "pslld",
53 "psllq", "psllw", "psrad", "psraw", "psrld", "psrlq", "psrlw",
54 "psubb", "psubd", "psubsb", "psubsw", "psubusb", "psubusw",
55 "psubw", "punpckhbw", "punpckhdq", "punpckhwd", "punpcklbw",
56 "punpckldq", "punpcklwd", "push", "pusha", "pushad", "pushaw",
57 "pushf", "pushfd", "pushfw", "pxor", "rcl", "rcr", "rdmsr",
58 "rdpmc", "rdtsc", "resb", "resd", "resq", "rest", "resw", "ret",
59 "retf", "retn", "rol", "ror", "rsm", "sahf", "sal", "salc",
60 "sar", "sbb", "scasb", "scasd", "scasw", "sgdt", "shl", "shld",
61 "shr", "shrd", "sidt", "sldt", "smsw", "stc", "std", "sti",
62 "stosb", "stosd", "stosw", "str", "sub", "test", "umov", "verr",
63 "verw", "wait", "wbinvd", "wrmsr", "xadd", "xchg", "xlatb",
67 static char *icn
[] = { /* conditional instructions */
71 static int ico
[] = { /* and the corresponding opcodes */
72 I_CMOVcc
, I_Jcc
, I_SETcc
75 static char *conditions
[] = { /* condition code names */
76 "a", "ae", "b", "be", "c", "e", "g", "ge", "l", "le", "na", "nae",
77 "nb", "nbe", "nc", "ne", "ng", "nge", "nl", "nle", "no", "np",
78 "ns", "nz", "o", "p", "pe", "po", "s", "z"