⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opcode.c

📁 Intel x86处理器的汇编器
💻 C
📖 第 1 页 / 共 5 页
字号:
	{ 0, GPR|ALL_REGS|0x0e, GPR|ALL_REGS|MEM|MOFFSET|SIZE16, 
		I_GPI, 0x0f02 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t LAL[] = {
	/* LAL Gv, Ew */
	{ 0, GPR|ALL_REGS|0x0e, MEM|MOFFSET|SIZE16, I_GPI, 0x0f03 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t SYSCALL[] = {
	/* SYSCALL */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f05 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CLTS[] = {
	/* CLTS */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f06 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t SYSRET[] = {
	/* SYSRET */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f07 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t WRMSR[] = {
	/* WRMSR */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f30 },

	{ 0, 0, 0, 0, 0 }	
};


i_key_t RDTSC[] = {
	/* RDTSC */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f31 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t RDMSR[] = {
	/* RDMSR */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f32 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t RDPMC[] = {
	/* RDPMC */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0f33 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t SYSENTER[] = {
	/* SYSENTER */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE|ONLY_IN_64, 0x0f34 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t SYSEXIT[] = {
	/* SYSEXIT */
	{ 0, 0, 0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE|ONLY_IN_64, 0x0f35 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVO[] = {
	/* CMOVO Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f40 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVNO[] = {
	/* CMOVNO Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f41 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVB[] = {
	/* CMOVB Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f42 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVNB[] = {
	/* CMOVNB Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f43 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVZ[] = {
	/* CMOVZ Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f44 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVNZ[] = {
	/* CMOVNZ Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f45 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVBE[] = {
	/* CMOVBE Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f46 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVNBE[] = {
	/* CMOVNBE Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f47 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVS[] = {
	/* CMOVS Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f48 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVNS[] = {
	/* CMOVNS Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f49 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVP[] = {
	/* CMOVP Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f4a },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVNP[] = {
	/* CMOVNP Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f4b },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVL[] = {
	/* CMOVL Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f4c },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMOVLE[] = {
	/* CMOVLE Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f4e },

	{ 0, 0, 0, 0, 0 }
};

i_key_t CMOVNLE[] = {
	/* CMOVNLE Gv, Ev */
	{ 0, GPR|ALL_REGS|0x0e, GPR|MEM|MOFFSET|ALL_REGS|0x0e,
		I_GPI, 0x0f4f },

	{ 0, 0, 0, 0, 0 }
};


i_key_t LSS[] = {
	/* LSS Gz, Mp */
	{ 0, GPR|ALL_REGS|0x0e, MEM|MOFFSET|SIZE32, 
		I_GPI|FAR_POINTER, 0x0fb2 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t LFS[] = {
	/* LFS Gz, Mp */
	{ 0, GPR|ALL_REGS|0x0e, MEM|MOFFSET|SIZE32, 
		I_GPI|FAR_POINTER, 0x0fb4 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t LGS[] = {
	/* LGS Gz, Mp */
	{ 0, GPR|ALL_REGS|0x0e, MEM|MOFFSET|SIZE32, 
		I_GPI|FAR_POINTER, 0x0fb5 },

	{ 0, 0, 0, 0, 0 }
};


i_key_t CMPXCHG[] = {
	/* CMPXCHG Eb, Gb */
	{ 0, GPR|MEM|MOFFSET|ALL_REGS|SIZE8, GPR|ALL_REGS|SIZE8,
		I_GPI|FS_8, 0x0fb0 },

	/* CMPXCHG Ev, Gv */
	{ 0, GPR|MEM|MOFFSET|ALL_REGS|0x0e, GPR|ALL_REGS|0x0e,
		I_GPI, 0x0fb1 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t XADD[] = {
	/* XADD Eb, Gb */
	{ 0, GPR|ALL_REGS|MEM|MOFFSET|SIZE8, GPR|ALL_REGS|SIZE8,
		I_GPI, 0x0fc0 },

	/* XADD Ev, Gv */
	{ 0, GPR|ALL_REGS|MEM|MOFFSET|0x0e, GPR|ALL_REGS|0x0e,
		I_GPI, 0x0fc1 },

	{ 0, 0, 0, 0, 0 }
};

i_key_t BSWAP[] = {
	/* BSWAP rAx/r8 */
	{ 0, 0, GPR|rAX|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fc8 },

	/* BSWAP rCX/r9 */
	{ 0, 0, GPR|rCX|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fc9 },

	/* BSWAP rDX/r10 */
	{ 0, 0, GPR|rDX|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fca },

	/* BSWAP rBX/r11 */
	{ 0, 0, GPR|rBX|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fcb },

	/* BSWAP rSP/r12 */
	{ 0, 0, GPR|rSP|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fcc },

	/* BSWAP rBP/r13 */
	{ 0, 0, GPR|rBP|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fcd },

	/* BSWAP rSI/r14 */
	{ 0, 0, GPR|rSI|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fce },

	/* BSWAP rDI/r15 */
	{ 0, 0, GPR|rDI|0xc0, I_GPI|NO_NEED_MODRM|ONLY_OPCODE, 0x0fcf },

	{ 0, 0, 0, 0, 0 }
};



i_key_t AAM[] = {
	/* AAM */
	{ 0, 0, 0, I_GPI|INVLD_IN_64|ONLY_OPCODE|NO_NEED_MODRM, 0xd4 },
	{ 0, 0, 0, 0, 0 }
};

i_key_t AAD[] = {
	/* AAD */
	{ 0, 0, 0, I_GPI|INVLD_IN_64|ONLY_OPCODE|NO_NEED_MODRM, 0xd5 },
	{ 0, 0, 0, 0, 0 }
};

i_key_t SALC[] = {
	{ 0, 0, 0, I_GPI|INVLD_IN_64|ONLY_OPCODE|NO_NEED_MODRM, 0xd6 },
	{ 0, 0, 0, 0, }
};

i_key_t XLAT[] = {
	{ 0, 0, 0, I_GPI|ONLY_OPCODE|NO_NEED_MODRM, 0xd7 },
	{ 0, 0, 0, 0, 0 }
};


/************************************************************************/

i_set_t	i_set[] = {
	{ "mov", MOV },
	{ "push", PUSH },

	{ "add", ADD },
	{ "pop", POP },
	{ "or", OR },
	{ "adc", ADC },
	{ "sbb", SBB },
	{ "and", AND },
	{ "daa", DAA },
	{ "sub", SUB },
	{ "das", DAS },
	{ "xor", XOR },
	{ "aaa", AAA },
	{ "cmp", CMP },
	{ "aas", AAS },
	{ "inc", INC },
	{ "dec", DEC },
	{ "pusha", PUSHA },
	{ "pushd", PUSHD },
	{ "popa", POPA },
	{ "popd", POPD },
	{ "bound", BOUND },
	{ "arpl", ARPL },
	{ "movsxd", MOVSXD },
	{ "imul", IMUL },
	{ "insb", INSB },
	{ "insw", INSW },
	{ "insd", INSD },
	{ "outsb", OUTSB },
	{ "outsw", OUTSW },
	{ "outsd", OUTSD },
	{ "jo", JO },
	{ "jno", JNO },
	{ "jb", JB },
	{ "jc", JB },
	{ "jnae", JB },
	{ "jnb", JNB },
	{ "jnc", JNB },
	{ "jae", JNB },
	{ "jz", JZ },
	{ "je", JZ },
	{ "jnz", JNZ },
	{ "jne", JNZ },
	{ "jbe", JBE },
	{ "jna", JBE },
	{ "jnbe", JNBE },
	{ "ja", JNBE },
	{ "js", JS },
	{ "jns", JNS },
	{ "jp", JP },
	{ "jpe", JP },
	{ "jnp", JNP },
	{ "jpo", JNP },
	{ "jl", JL },
	{ "jnge", JL },
	{ "jnl", JNL },
	{ "jge", JNL },
	{ "jle", JLE },
	{ "jng", JLE },
	{ "jnle", JNLE },
	{ "jg", JNLE },
	{ "test", TEST },
	{ "xchg", XCHG },
	{ "lea", LEA },
	{ "nop", NOP },
	{ "cbw", CBW },
	{ "cwde", CWDE },
	{ "cdqe", CDQE },
	{ "cwd", CWD },
	{ "cdq", CDQ },
	{ "cqo", CQO },
	{ "call", CALL },
	{ "wait", WAIT },
	{ "fwait", FWAIT },
	{ "pushf", PUSHF },
	{ "pushd", PUSHD },
	{ "pushq", PUSHQ },
	{ "popf", POPF },
	{ "popd", POPD },
	{ "popq", POPQ },
	{ "sahf", SAHF },
	{ "lahf", LAHF },
	{ "movsb", MOVSB },
	{ "movsw", MOVSW },
	{ "movsd", MOVSD },
	{ "movsq", MOVSQ },
	{ "cmpsb", CMPSB },
	{ "cmpsw", CMPSW },
	{ "cmpsd", CMPSD },
	{ "cmpsq", CMPSQ },
	{ "stosb", STOSB },
	{ "stosw", STOSW },
	{ "stosd", STOSD },
	{ "stosq", STOSQ },
	{ "lodsb", LODSB },
	{ "lodsw", LODSW },
	{ "lodsd", LODSD },
	{ "lodsq", LODSQ },
	{ "scasb", SCASB },
	{ "scasw", SCASW },
	{ "scasd", SCASD },
	{ "scasq", SCASQ },
	{ "ret", RET },
	{ "les", LES },
	{ "lds", LDS },
	{ "enter", ENTER },
	{ "leave", LEAVE },
	{ "int3", INT3 },
	{ "int", INTN },
	{ "into", INTO },
	{ "iret", IRET },
	{ "iretd", IRETD },
	{ "iretq", IRETQ },
/*
	{ "loopnz", LOOPNZ },
	{ "loopz", LOOPZ },
	{ "loop", LOOP },
	{ "jrcxz", JRCXZ },
*/
	{ "in", IN },
	{ "out", OUT },
	{ "jmp", JMP },
	{ "int1", INT1 },
	{ "hlt", HLT },
	{ "cmc", CMC },
	{ "clc", CLC },
	{ "stc", STD },
	{ "cli", CLI },
	{ "sti", STI },
	{ "cld", CLD },
	{ "std", STD },
	{ "rol", ROL },
	{ "ror", ROR },
	{ "rcl", RCL },
	{ "rcr", RCR },
	{ "shl", SHL },
	{ "sal", SHL },
	{ "shr", SHR },
	{ "sar", SAR },
	{ "not", NOT },
	{ "neg", NEG },
	{ "mul", MUL },
	{ "div", DIV },
	{ "idiv", IDIV },
	{ "sldt", SLDT },
	{ "str", STR },
	{ "lldt", LLDT },
	{ "ltr", LTR },
	{ "verr", VERR },
	{ "verw", VERW },
	{ "sgdt", SGDT },
	{ "sidt", SIDT },
	{ "lgdt", LGDT },
	{ "lidt", LIDT },
	{ "smsw", SMSW },
	{ "lmsw", LMSW },
	{ "invlpg", INVLPG },
	{ "swapgs", SWAPGS },
	{ "lfence", LFENCE },
	{ "mfence", MFENCE },
	{ "sfence", SFENCE },
	{ "bt", BT },
	{ "shld", SHLD },
	{ "bts",  BTS },
	{ "btr",  BTR },
	{ "btc",  BTC },
	{ "cpuid", CPUID },
	{ "seto", SETO },
	{ "setno", SETNO },
	{ "setb", SETB },
	{ "setnb", SETNB },
	{ "setz", SETZ },
	{ "setnz", SETNZ },
	{ "setbe", SETBE },
	{ "setnbe", SETNBE },
	{ "movzx", MOVZX },
	{ "sets", SETS },
	{ "setns", SETNS },
	{ "setp", SETP },
	{ "setnp", SETNP },
	{ "setl", SETL },
	{ "setnl", SETNL },
	{ "setle", SETLE },
	{ "setnle", SETNLE },
	{ "rsm", RSM },
	{ "shrd", SHRD },
	{ "bsf", BSF },
	{ "bsr", BSR },
	{ "movsx", MOVSX },
	{ "lar", LAR },
	{ "lal", LAL },
	{ "syscall", SYSCALL },
	{ "clts", CLTS },
	{ "sysret", SYSRET },
	{ "wrmsr", WRMSR },
	{ "rdtsc", RDTSC },
	{ "rdmsr", RDMSR },
	{ "rdpmc", RDPMC },
	{ "sysenter", SYSENTER },
	{ "sysexit", SYSEXIT },
	{ "cmovo", CMOVO },
	{ "cmovno", CMOVNO },
	{ "cmovb", CMOVB },
	{ "cmovnb", CMOVNB },
	{ "cmovz", CMOVZ },
	{ "cmovnz", CMOVNZ },
	{ "cmovbe", CMOVB },
	{ "cmovnbe", CMOVBE },
	{ "cmovs", CMOVS },
	{ "cmovns", CMOVNS },
	{ "cmovp", CMOVP },
	{ "cmovnp", CMOVNP },
	{ "cmovl", CMOVL },
	{ "cmovnl", CMOVNL },
	{ "cmovle", CMOVLE },
	{ "cmovnle", CMOVNLE },
	{ "lss", LSS },
	{ "lfs", LFS },
	{ "lgs", LGS },
	{ "cmpxchg", CMPXCHG },
	{ "xadd", XADD },
	{ "bswap", BSWAP },
	{ "aam", AAM },
	{ "aad", AAD },
	{ "salc", SALC },
	{ "xlat", XLAT },
	
/*-------------- X87 instruction ----------------*/

#if 0
	{ "fadd", fadd },
	{ "fmul", fmul },
	{ "fcom", fcom },
	{ "fcomp", fcomp },
	{ "fsub", fsub },
	{ "fsubr", fsubr },
	{ "fdiv", fdiv },
	{ "fdivr", fdivr },
	{ "fld", fld },
	{ "fxch", fxch },
	{ "fst", fst },
	{ "fstp", fstp },
	{ "fldenv", fldenv },	
	{ "fldcw", fldcw },
	{ "fstenv", fstenv },
	{ "fstcw", fstcw },
	{ "fnop", fnop },
	{ "fchs", fchs },
	{ "fld1", fld1 },
	{ "f2xm1", f2xm1 },
	{ "fprem", fprem },
	{ "fabs", fabs },
	{ "ftst", ftst },
	{ "fxam", fxam },
	{ "fldl2t", fldl2t },
	{ "fldl2e", fldl2e },
	{ "fldpi", fldpi },
	{ "fldlg2", fldlg2 },
	{ "fldln2", fldln2 },
	{ "fldz", fldz },
	{ "fyl2x", fy12x },
	{ "fptan", fptan },
	{ "fpatan", fpatan },
	{ "fxtract", fxtract },
	{ "fprem1", fprem1 },
	{ "fdecstp", fecstp },
	{ "fincstp", fincstp },
	{ "fyl2xp1", fyl2xp1 },
	{ "fsqrt", fsqrt },
	{ "fsincos", fsincos },
	{ "frndint", frndint },
	{ "fscale", fscale },
	{ "fsin", fsin },
	{ "fcos", fcos },
	{ "fiadd", fiadd },
	{ "fcmovb", fcmovb },
	{ "fcmove", fcmove },
	{ "fcmovbe", fcmovbe },
	{ "fcmovu", fcmovu },
	{ "fimul", fimul },
	{ "ficom", ficom },
	{ "ficomp", ficomp },
	{ "fisub", fisub },
	{ "fisubr", fisubr },
	{ "fidiv", fidiv },
	{ "fidivr", fidivr },
	{ "fucompp", fucompp },
	{ "fild", fild },

#endif
	
	{ 0, 0 }
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -