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 + -
显示快捷键?