libdasm.c
来自「基于fuzzing的文件格式漏洞测试软件」· C语言 代码 · 共 799 行 · 第 1/5 页
C
799 行
{ INSTRUCTION_TYPE_OTHER, "ext", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "hlt", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "cmc", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "g3", AM_E|OT_b, FLAGS_NONE, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "g3", AM_E|OT_v, FLAGS_NONE, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "clc", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "stc", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "cli", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "sti", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "cld", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "std", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "g4", AM_E|OT_b, FLAGS_NONE, FLAGS_NONE, 1 },
// XXX: far call/jmp syntax in 16-bit mode
{ INSTRUCTION_TYPE_OTHER, "g5", AM_E|OT_v, FLAGS_NONE, FLAGS_NONE, 1 },
};
INST inst_table2[256] = {
{ INSTRUCTION_TYPE_OTHER, "g6", AM_E|OT_w, FLAGS_NONE, FLAGS_NONE, 1 },
// XXX: smsw and lmsw in grp 7 use addressing mode E !!!
{ INSTRUCTION_TYPE_OTHER, "g7", AM_M|OT_w, FLAGS_NONE, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "lar", AM_G|OT_v, AM_E|OT_w, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "lsl", AM_G|OT_v, AM_E|OT_w, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
// XXX: undocumented?
{ INSTRUCTION_TYPE_OTHER, "loadall286",FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "clts", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
// XXX: undocumented?
{ INSTRUCTION_TYPE_OTHER, "loadall", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "invd", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "wbinvd", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "ud2", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "movups", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movups", AM_W|OT_ps, AM_V|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movlps", AM_V|OT_v, AM_W|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movlps", AM_W|OT_q, AM_V|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "unpcklps", AM_V|OT_ps, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "unpcklps", AM_V|OT_ps, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movhps", AM_V|OT_q, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movhps", AM_W|OT_q, AM_V|OT_q, FLAGS_NONE, 1 },
// XXX: grp 16
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "mov", AM_R|OT_d, AM_C|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "mov", AM_R|OT_d, AM_D|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "mov", AM_C|OT_d, AM_R|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "mov", AM_D|OT_d, AM_R|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "mov", AM_R|OT_d, AM_T|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "mov", AM_T|OT_d, AM_R|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "movaps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movaps", AM_W|OT_ps, AM_V|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cvtpi2ps", AM_V|OT_ps, AM_Q|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movntps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cvttps2pi",AM_P|OT_q, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cvtps2pi", AM_P|OT_v, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "ucomiss", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "comiss", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "wrmsr", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "rdtsc", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "rdmsr", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "rdpmc", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "sysenter", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "sysexit", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "cmovo", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovno", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovb", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovae", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmove", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovne", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovbe", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmova", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovs", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovns", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovp", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovnp", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovl", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovge", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovle", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cmovg", AM_G|OT_v, AM_E|OT_v, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movmskps", AM_E|OT_d, AM_V|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "sqrtps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "rsqrtps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "rcpps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "andps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "andnps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "orps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "xorps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "addps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "mulps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cvtps2pd", AM_V|OT_ps, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "cvtdq2ps", AM_V|OT_ps, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "subps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "minps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "divps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "maxps", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpcklbw",AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpcklwd",AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punockldq",AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "packusdw", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pcmpgtb", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pcmpgtw", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pcmpgtd", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "packsswb", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpckhbw",AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpckhbd",AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpckhdq",AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "packssdw", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpcklqdq",AM_V|OT_q, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "punpckhqd",AM_V|OT_q, AM_W|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movd", AM_P|OT_d, AM_E|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movq", AM_P|OT_q, AM_Q|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pshufw", AM_P|OT_q, AM_Q|OT_q, AM_I|OT_b, 1 },
// XXX: check groups 12-14
{ INSTRUCTION_TYPE_OTHER, "pshimw", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pshimd", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pshimq", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pcmpeqb", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pcmpeqw", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "pcmpeqd", AM_P|OT_q, AM_Q|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "emms", FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, NULL, FLAGS_NONE, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_OTHER, "haddpd", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "hsubpd", AM_V|OT_ps, AM_W|OT_ps, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movd", AM_E|OT_d, AM_P|OT_d, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_OTHER, "movq", AM_E|OT_q, AM_Q|OT_q, FLAGS_NONE, 1 },
{ INSTRUCTION_TYPE_JMPC, "jo", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jno", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jb", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jnb", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jz", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jnz", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jbe", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "jnbe", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
{ INSTRUCTION_TYPE_JMPC, "js", AM_J|OT_v, FLAGS_NONE, FLAGS_NONE, 0 },
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?