Diff
Modified: trunk/arch/x86/x86_disasm.cpp (423 => 424)
--- trunk/arch/x86/x86_disasm.cpp 2010-04-25 13:20:27 UTC (rev 423)
+++ trunk/arch/x86/x86_disasm.cpp 2010-04-26 16:16:14 UTC (rev 424)
@@ -12,122 +12,9 @@
#include "x86_decode.h"
static const char* mnemo[] = {
- /* [INSTR_AAA] */ "aaa",
- /* [INSTR_AAD] */ "aad",
- /* [INSTR_AAM] */ "aam",
- /* [INSTR_AAS] */ "aas",
- /* [INSTR_ADC] */ "adc",
- /* [INSTR_ADD] */ "add",
- /* [INSTR_AND] */ "and",
- /* [INSTR_CALL] */ "call",
- /* [INSTR_CBW] */ "cbw",
- /* [INSTR_CLC] */ "clc",
- /* [INSTR_CLD] */ "cld",
- /* [INSTR_CLI] */ "cli",
- /* [INSTR_CMC] */ "cmc",
- /* [INSTR_CMPSB] */ "cmpsb",
- /* [INSTR_CMPSW] */ "cmpsw",
- /* [INSTR_CMP] */ "cmp",
- /* [INSTR_CWD] */ "cwd",
- /* [INSTR_DAA] */ "daa",
- /* [INSTR_DAS] */ "das",
- /* [INSTR_DEC] */ "dec",
- /* [INSTR_DIV] */ "div",
- /* [INSTR_HLT] */ "hlt",
- /* [INSTR_IDIV] */ "idiv",
- /* [INSTR_IMUL] */ "imul",
- /* [INSTR_INC] */ "inc",
- /* [INSTR_INTO] */ "into",
- /* [INSTR_INT] */ "int",
- /* [INSTR_IN] */ "in",
- /* [INSTR_IRET] */ "iret",
- /* [INSTR_JAE] */ "jae",
- /* [INSTR_JA] */ "ja",
- /* [INSTR_JBE] */ "jbe",
- /* [INSTR_JB] */ "jb",
- /* [INSTR_JCXZ] */ "jcxz",
- /* [INSTR_JC] */ "jc",
- /* [INSTR_JE] */ "je",
- /* [INSTR_JGE] */ "jge",
- /* [INSTR_JG] */ "jg",
- /* [INSTR_JLE] */ "jle",
- /* [INSTR_JL] */ "jl",
- /* [INSTR_JMP] */ "jmp",
- /* [INSTR_JNAE] */ "jnae",
- /* [INSTR_JNA] */ "jna",
- /* [INSTR_JNBE] */ "jnbe",
- /* [INSTR_JNB] */ "jnb",
- /* [INSTR_JNC] */ "jnc",
- /* [INSTR_JNE] */ "jne",
- /* [INSTR_JNGE] */ "jnge",
- /* [INSTR_JNG] */ "jng",
- /* [INSTR_JNLE] */ "jnle",
- /* [INSTR_JNL] */ "jnl",
- /* [INSTR_JNO] */ "jno",
- /* [INSTR_JNP] */ "jnp",
- /* [INSTR_JNS] */ "jns",
- /* [INSTR_JNZ] */ "jnz",
- /* [INSTR_JO] */ "jo",
- /* [INSTR_JPE] */ "jpe",
- /* [INSTR_JPO] */ "jpo",
- /* [INSTR_JP] */ "jp",
- /* [INSTR_JS] */ "js",
- /* [INSTR_JZ] */ "jz",
- /* [INSTR_LAHF] */ "lahf",
- /* [INSTR_LDS] */ "lds",
- /* [INSTR_LEA] */ "lea",
- /* [INSTR_LES] */ "les",
- /* [INSTR_LODSB] */ "lodsb",
- /* [INSTR_LODSW] */ "lodsw",
- /* [INSTR_LOOPE] */ "loope",
- /* [INSTR_LOOPNE] */ "loopne",
- /* [INSTR_LOOPNZ] */ "loopnz",
- /* [INSTR_LOOPZ] */ "loopz",
- /* [INSTR_LOOP] */ "loop",
- /* [INSTR_MOVSB] */ "movsb",
- /* [INSTR_MOVSW] */ "movsw",
- /* [INSTR_MOV] */ "mov",
- /* [INSTR_MUL] */ "mul",
- /* [INSTR_NEG] */ "neg",
- /* [INSTR_NOP] */ "nop",
- /* [INSTR_NOT] */ "not",
- /* [INSTR_OR] */ "or",
- /* [INSTR_OUT] */ "out",
- /* [INSTR_POPA] */ "popa",
- /* [INSTR_POPF] */ "popf",
- /* [INSTR_POP] */ "pop",
- /* [INSTR_PUSHA] */ "pusha",
- /* [INSTR_PUSHF] */ "pushf",
- /* [INSTR_PUSH] */ "push",
- /* [INSTR_RCL] */ "rcl",
- /* [INSTR_RCR] */ "rcr",
- /* [INSTR_REPE] */ "repe",
- /* [INSTR_REPNE] */ "repne",
- /* [INSTR_REPNZ] */ "repnz",
- /* [INSTR_REPZ] */ "repz",
- /* [INSTR_REP] */ "rep",
- /* [INSTR_RETF] */ "retf",
- /* [INSTR_RET] */ "ret",
- /* [INSTR_ROL] */ "rol",
- /* [INSTR_ROR] */ "ror",
- /* [INSTR_SAHF] */ "sahf",
- /* [INSTR_SAL] */ "sal",
- /* [INSTR_SAR] */ "sar",
- /* [INSTR_SBB] */ "sbb",
- /* [INSTR_SCASB] */ "scasb",
- /* [INSTR_SCASW] */ "scasw",
- /* [INSTR_SHL] */ "shl",
- /* [INSTR_SHR] */ "shr",
- /* [INSTR_STC] */ "stc",
- /* [INSTR_STD] */ "std",
- /* [INSTR_STI] */ "sti",
- /* [INSTR_STOSB] */ "stosb",
- /* [INSTR_STOSW] */ "stosw",
- /* [INSTR_SUB] */ "sub",
- /* [INSTR_TEST] */ "test",
- /* [INSTR_XCHG] */ "xchg",
- /* [INSTR_XLATB] */ "xlatb",
- /* [INSTR_XOR] */ "xor",
+#define DECLARE_INSTR(name,str) str,
+#include "x86_instr.h"
+#undef DECLARE_INSTR
};
static const char *to_mnemonic(struct x86_instr *instr)
Added: trunk/arch/x86/x86_instr.h (0 => 424)
--- trunk/arch/x86/x86_instr.h (rev 0)
+++ trunk/arch/x86/x86_instr.h 2010-04-26 16:16:14 UTC (rev 424)
@@ -0,0 +1,116 @@
+DECLARE_INSTR(INSTR_AAA, "aaa")
+DECLARE_INSTR(INSTR_AAD, "aad")
+DECLARE_INSTR(INSTR_AAM, "aam")
+DECLARE_INSTR(INSTR_AAS, "aas")
+DECLARE_INSTR(INSTR_ADC, "adc")
+DECLARE_INSTR(INSTR_ADD, "add")
+DECLARE_INSTR(INSTR_AND, "and")
+DECLARE_INSTR(INSTR_CALL, "call")
+DECLARE_INSTR(INSTR_CBW, "cbw")
+DECLARE_INSTR(INSTR_CLC, "clc")
+DECLARE_INSTR(INSTR_CLD, "cld")
+DECLARE_INSTR(INSTR_CLI, "cli")
+DECLARE_INSTR(INSTR_CMC, "cmc")
+DECLARE_INSTR(INSTR_CMP, "cmp")
+DECLARE_INSTR(INSTR_CMPSB, "cmpsb")
+DECLARE_INSTR(INSTR_CMPSW, "cmpsw")
+DECLARE_INSTR(INSTR_CWD, "cwd")
+DECLARE_INSTR(INSTR_DAA, "daa")
+DECLARE_INSTR(INSTR_DAS, "das")
+DECLARE_INSTR(INSTR_DEC, "dec")
+DECLARE_INSTR(INSTR_DIV, "div")
+DECLARE_INSTR(INSTR_HLT, "hlt")
+DECLARE_INSTR(INSTR_IDIV, "idiv")
+DECLARE_INSTR(INSTR_IMUL, "imul")
+DECLARE_INSTR(INSTR_IN, "in")
+DECLARE_INSTR(INSTR_INC, "inc")
+DECLARE_INSTR(INSTR_INT, "int")
+DECLARE_INSTR(INSTR_INTO, "into")
+DECLARE_INSTR(INSTR_IRET, "iret")
+DECLARE_INSTR(INSTR_JA, "ja")
+DECLARE_INSTR(INSTR_JAE, "jae")
+DECLARE_INSTR(INSTR_JB, "jb")
+DECLARE_INSTR(INSTR_JBE, "jbe")
+DECLARE_INSTR(INSTR_JC, "jc")
+DECLARE_INSTR(INSTR_JCXZ, "jcxz")
+DECLARE_INSTR(INSTR_JE, "je")
+DECLARE_INSTR(INSTR_JG, "jg")
+DECLARE_INSTR(INSTR_JGE, "jge")
+DECLARE_INSTR(INSTR_JL, "jl")
+DECLARE_INSTR(INSTR_JLE, "jle")
+DECLARE_INSTR(INSTR_JMP, "jmp")
+DECLARE_INSTR(INSTR_JNA, "jna")
+DECLARE_INSTR(INSTR_JNAE, "jnae")
+DECLARE_INSTR(INSTR_JNB, "jnb")
+DECLARE_INSTR(INSTR_JNBE, "jnbe")
+DECLARE_INSTR(INSTR_JNC, "jnc")
+DECLARE_INSTR(INSTR_JNE, "jne")
+DECLARE_INSTR(INSTR_JNG, "jng")
+DECLARE_INSTR(INSTR_JNGE, "jnge")
+DECLARE_INSTR(INSTR_JNL, "jnl")
+DECLARE_INSTR(INSTR_JNLE, "jnle")
+DECLARE_INSTR(INSTR_JNO, "jno")
+DECLARE_INSTR(INSTR_JNP, "jnp")
+DECLARE_INSTR(INSTR_JNS, "jns")
+DECLARE_INSTR(INSTR_JNZ, "jnz")
+DECLARE_INSTR(INSTR_JO, "jo")
+DECLARE_INSTR(INSTR_JP, "jp")
+DECLARE_INSTR(INSTR_JPE, "jpe")
+DECLARE_INSTR(INSTR_JPO, "jpo")
+DECLARE_INSTR(INSTR_JS, "js")
+DECLARE_INSTR(INSTR_JZ, "jz")
+DECLARE_INSTR(INSTR_LAHF, "lahf")
+DECLARE_INSTR(INSTR_LDS, "lds")
+DECLARE_INSTR(INSTR_LEA, "lea")
+DECLARE_INSTR(INSTR_LES, "les")
+DECLARE_INSTR(INSTR_LODSB, "lodsb")
+DECLARE_INSTR(INSTR_LODSW, "lodsw")
+DECLARE_INSTR(INSTR_LOOP, "loop")
+DECLARE_INSTR(INSTR_LOOPE, "loope")
+DECLARE_INSTR(INSTR_LOOPNE, "loopne")
+DECLARE_INSTR(INSTR_LOOPNZ, "loopnz")
+DECLARE_INSTR(INSTR_LOOPZ, "loopz")
+DECLARE_INSTR(INSTR_MOV, "mov")
+DECLARE_INSTR(INSTR_MOVSB, "movsb")
+DECLARE_INSTR(INSTR_MOVSW, "movsw")
+DECLARE_INSTR(INSTR_MUL, "mul")
+DECLARE_INSTR(INSTR_NEG, "neg")
+DECLARE_INSTR(INSTR_NOP, "nop")
+DECLARE_INSTR(INSTR_NOT, "not")
+DECLARE_INSTR(INSTR_OR, "or")
+DECLARE_INSTR(INSTR_OUT, "out")
+DECLARE_INSTR(INSTR_POP, "pop")
+DECLARE_INSTR(INSTR_POPA, "popa")
+DECLARE_INSTR(INSTR_POPF, "popf")
+DECLARE_INSTR(INSTR_PUSH, "push")
+DECLARE_INSTR(INSTR_PUSHA, "pusha")
+DECLARE_INSTR(INSTR_PUSHF, "pushf")
+DECLARE_INSTR(INSTR_RCL, "rcl")
+DECLARE_INSTR(INSTR_RCR, "rcr")
+DECLARE_INSTR(INSTR_REP, "rep")
+DECLARE_INSTR(INSTR_REPE, "repe")
+DECLARE_INSTR(INSTR_REPNE, "repne")
+DECLARE_INSTR(INSTR_REPNZ, "repnz")
+DECLARE_INSTR(INSTR_REPZ, "repz")
+DECLARE_INSTR(INSTR_RET, "ret")
+DECLARE_INSTR(INSTR_RETF, "retf")
+DECLARE_INSTR(INSTR_ROL, "rol")
+DECLARE_INSTR(INSTR_ROR, "ror")
+DECLARE_INSTR(INSTR_SAHF, "sahf")
+DECLARE_INSTR(INSTR_SAL, "sal")
+DECLARE_INSTR(INSTR_SAR, "sar")
+DECLARE_INSTR(INSTR_SBB, "sbb")
+DECLARE_INSTR(INSTR_SCASB, "scasb")
+DECLARE_INSTR(INSTR_SCASW, "scasw")
+DECLARE_INSTR(INSTR_SHL, "shl")
+DECLARE_INSTR(INSTR_SHR, "shr")
+DECLARE_INSTR(INSTR_STC, "stc")
+DECLARE_INSTR(INSTR_STD, "std")
+DECLARE_INSTR(INSTR_STI, "sti")
+DECLARE_INSTR(INSTR_STOSB, "stosb")
+DECLARE_INSTR(INSTR_STOSW, "stosw")
+DECLARE_INSTR(INSTR_SUB, "sub")
+DECLARE_INSTR(INSTR_TEST, "test")
+DECLARE_INSTR(INSTR_XCHG, "xchg")
+DECLARE_INSTR(INSTR_XLATB, "xlatb")
+DECLARE_INSTR(INSTR_XOR, "xor")
Modified: trunk/arch/x86/x86_isa.h (423 => 424)
--- trunk/arch/x86/x86_isa.h 2010-04-25 13:20:27 UTC (rev 423)
+++ trunk/arch/x86/x86_isa.h 2010-04-26 16:16:14 UTC (rev 424)
@@ -7,128 +7,10 @@
#ifndef X86_ISA_H
#define X86_ISA_H
-/*
- * 8086 instruction set. See the following URL for further information:
-
- * http://www.emu8086.com/assembly_language_tutorial_assembler_reference/8086_instruction_set.html
- */
enum x86_instr_types {
- INSTR_AAA,
- INSTR_AAD,
- INSTR_AAM,
- INSTR_AAS,
- INSTR_ADC,
- INSTR_ADD,
- INSTR_AND,
- INSTR_CALL,
- INSTR_CBW,
- INSTR_CLC,
- INSTR_CLD,
- INSTR_CLI,
- INSTR_CMC,
- INSTR_CMP,
- INSTR_CMPSB,
- INSTR_CMPSW,
- INSTR_CWD,
- INSTR_DAA,
- INSTR_DAS,
- INSTR_DEC,
- INSTR_DIV,
- INSTR_HLT,
- INSTR_IDIV,
- INSTR_IMUL,
- INSTR_IN,
- INSTR_INC,
- INSTR_INT,
- INSTR_INTO,
- INSTR_IRET,
- INSTR_JA,
- INSTR_JAE,
- INSTR_JB,
- INSTR_JBE,
- INSTR_JC,
- INSTR_JCXZ,
- INSTR_JE,
- INSTR_JG,
- INSTR_JGE,
- INSTR_JL,
- INSTR_JLE,
- INSTR_JMP,
- INSTR_JNA,
- INSTR_JNAE,
- INSTR_JNB,
- INSTR_JNBE,
- INSTR_JNC,
- INSTR_JNE,
- INSTR_JNG,
- INSTR_JNGE,
- INSTR_JNL,
- INSTR_JNLE,
- INSTR_JNO,
- INSTR_JNP,
- INSTR_JNS,
- INSTR_JNZ,
- INSTR_JO,
- INSTR_JP,
- INSTR_JPE,
- INSTR_JPO,
- INSTR_JS,
- INSTR_JZ,
- INSTR_LAHF,
- INSTR_LDS,
- INSTR_LEA,
- INSTR_LES,
- INSTR_LODSB,
- INSTR_LODSW,
- INSTR_LOOP,
- INSTR_LOOPE,
- INSTR_LOOPNE,
- INSTR_LOOPNZ,
- INSTR_LOOPZ,
- INSTR_MOV,
- INSTR_MOVSB,
- INSTR_MOVSW,
- INSTR_MUL,
- INSTR_NEG,
- INSTR_NOP,
- INSTR_NOT,
- INSTR_OR,
- INSTR_OUT,
- INSTR_POP,
- INSTR_POPA,
- INSTR_POPF,
- INSTR_PUSH,
- INSTR_PUSHA,
- INSTR_PUSHF,
- INSTR_RCL,
- INSTR_RCR,
- INSTR_REP,
- INSTR_REPE,
- INSTR_REPNE,
- INSTR_REPNZ,
- INSTR_REPZ,
- INSTR_RET,
- INSTR_RETF,
- INSTR_ROL,
- INSTR_ROR,
- INSTR_SAHF,
- INSTR_SAL,
- INSTR_SAR,
- INSTR_SBB,
- INSTR_SCASB,
- INSTR_SCASW,
- INSTR_SHL,
- INSTR_SHR,
- INSTR_STC,
- INSTR_STD,
- INSTR_STI,
- INSTR_STOSB,
- INSTR_STOSW,
- INSTR_SUB,
- INSTR_TEST,
- INSTR_XCHG,
- INSTR_XLATB,
- INSTR_XOR,
+#define DECLARE_INSTR(name,str) name,
+#include "x86_instr.h"
+#undef DECLARE_INSTR
};
#endif /* X86_ISA_H */