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

📄 dsmlib.c

📁 vxworks源码源码解读是学习vxworks的最佳途径
💻 C
📖 第 1 页 / 共 4 页
字号:
/* dsmLib.c - i80x86 disassembler *//* Copyright 1984-1998 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01i,06may98,fle  added P5 and P6 related instructions and facilities01h,14nov94,hdn  changed D->DISR, W->WFUL, S->SEXT, P->POP, A->AX, I->IMM.01g,29may94,hdn  removed I80486.01f,31aug93,hdn  changed a type of 1st parameter, from char to UCHAR.01e,02aug93,hdn  fixed a case that has mod=0,rm=5,disp32 operand.01d,01jun93,hdn  updated to 5.1		  - changed functions to ansi style		  - fixed #else and #endif		  - changed VOID to void		  - changed copyright notice01c,18mar93,hdn  supported 486 instructions.01b,05nov92,hdn  supported "16 bit operand","rep","repne","shift by 1".		 fixed a bug that is about "empty index".01a,23jun92,hdn  written. *//*This library contains everything necessary to print i80x86 object code inassembly language format. The programming interface is via dsmInst(), which prints a single disassembledinstruction, and dsmNbytes(), which reports the size of an instruction.To disassemble from the shell, use l(), which calls thislibrary to do the actual work.  See dbgLib for details.INCLUDE FILE: dsmLib.hSEE ALSO: dbgLib*/#include "vxWorks.h"#include "dsmLib.h"#include "symLib.h"#include "string.h"#include "stdio.h"#include "errnoLib.h"/* * This table is ordered by the number of bits in an instruction's  * two word mask, beginning with the greatest number of bits in masks.   * This scheme is used for avoiding conflicts between instructions  * when matching bit patterns.  The instruction ops are arranged  * sequentially within each group of instructions for a particular  * mask so that uniqueness can be easily spotted.   *//* globals */LOCAL OP3MASK op3 [] =    {    /* additional 3 bits mask for OP3 instructions */    {0x20, 0x38},			/* BT		16 + 3 bits */    {0x38, 0x38},			/* BTC		16 + 3 bits */    {0x30, 0x38},			/* BTR		16 + 3 bits */    {0x28, 0x38},			/* BTS		16 + 3 bits */    {0x10, 0x38},			/* LGDT		16 + 3 bits */    {0x18, 0x38},			/* LIDT		16 + 3 bits */    {0x10, 0x38},			/* LLDT		16 + 3 bits */    {0x30, 0x38},			/* LMSW		16 + 3 bits */    {0x08, 0x38},			/* LTR		16 + 3 bits */    {0x00, 0x38},			/* SGDT		16 + 3 bits */    {0x08, 0x38},			/* SIDT		16 + 3 bits */    {0x00, 0x38},			/* SLDT		16 + 3 bits */    {0x20, 0x38},			/* SMSW		16 + 3 bits */    {0x08, 0x38},			/* STR		16 + 3 bits */    {0x20, 0x38},			/* VERR		16 + 3 bits */    {0x28, 0x38},			/* VERW		16 + 3 bits */    {0xf0, 0xf8},			/* PSLL         14 + 5 bits */    {0xe0, 0xf8},			/* PSRA         14 + 5 bits */    {0xd0, 0xf8},			/* PSRL         14 + 5 bits */    {0x00, 0x00},			/* CMOV         12 + 3 bits */    {0x00, 0x38},			/* CSET		12 + 3 bits */    {0, 0},				/* terminator               */    };LOCAL INST inst [] =    {    /* 16+3 bits mask */    {"BT", itBtI,		OP3|MODRM|I8,		0x0f, 0xba, 0xff, 0xff},    {"BTC", itBtcI,		OP3|MODRM|I8,		0x0f, 0xba, 0xff, 0xff},    {"BTR", itBtrI,		OP3|MODRM|I8,		0x0f, 0xba, 0xff, 0xff},    {"BTS", itBtsI,		OP3|MODRM|I8,		0x0f, 0xba, 0xff, 0xff},    {"LGDT", itLgdt,		OP3|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"LIDT", itLidt,		OP3|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"LLDT", itLldt,		OP3|MODRM,		0x0f, 0x00, 0xff, 0xff},    {"LMSW", itLmsw,		OP3|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"LTR", itLtr,		OP3|MODRM,		0x0f, 0x00, 0xff, 0xff},    {"SGDT", itSgdt,		OP3|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"SIDT", itSidt,		OP3|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"SLDT", itSldt,		OP3|MODRM,		0x0f, 0x00, 0xff, 0xff},    {"SMSW", itSmsw,		OP3|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"STR", itStr,		OP3|MODRM,		0x0f, 0x00, 0xff, 0xff},    {"VERR", itVerr,		OP3|MODRM,		0x0f, 0x00, 0xff, 0xff},    {"VERW", itVerw,		OP3|MODRM,		0x0f, 0x00, 0xff, 0xff},    /* 16 bits mask */    {"AAD", itAad,		OP2,			0xd5, 0x0a, 0xff, 0xff},    {"AAM", itAam,		OP2,			0xd4, 0x0a, 0xff, 0xff},    {"BSF", itBsf,		OP2|MODRM|REG,		0x0f, 0xbc, 0xff, 0xff},    {"BSR", itBsr,		OP2|MODRM|REG,		0x0f, 0xbd, 0xff, 0xff},    {"BT", itBtR,		OP2|MODRM|REG,		0x0f, 0xa3, 0xff, 0xff},    {"BTC", itBtcR,		OP2|MODRM|REG,		0x0f, 0xbb, 0xff, 0xff},    {"BTR", itBtrR,		OP2|MODRM|REG,		0x0f, 0xb3, 0xff, 0xff},    {"BTS", itBtsR,		OP2|MODRM|REG,		0x0f, 0xab, 0xff, 0xff},    {"CLTS", itClts,		OP2,			0x0f, 0x06, 0xff, 0xff},    {"CMPXCHG8B", itCmpxchg8b,	OP2|MODRM,		0x0f, 0xc7, 0xff, 0xff},    {"CPUID", itCpuid,		OP2,			0x0f, 0xa2, 0xff, 0xff},    {"EMMS", itEmms,		OP2,			0x0f, 0x77, 0xff, 0xff},    {"F2XM1", itF2xm1,		OP2,		ESC|0x01, 0xf0, 0xff, 0xff},    {"FABS", itFabs,		OP2,		ESC|0x01, 0xe1, 0xff, 0xff},    {"FCHS", itFchs,		OP2,		ESC|0x01, 0xe0, 0xff, 0xff},    {"FCLEX", itFclex,		OP2,		ESC|0x03, 0xe2, 0xff, 0xff},    {"FCOMPP", itFcompp,	OP2,		ESC|0x06, 0xd9, 0xff, 0xff},    {"FCOS", itFcos,		OP2,		ESC|0x01, 0xff, 0xff, 0xff},    {"FDECSTP", itFdecstp,	OP2,		ESC|0x01, 0xf6, 0xff, 0xff},    {"FINCSTP", itFincstp,	OP2,		ESC|0x01, 0xf7, 0xff, 0xff},    {"FINIT", itFinit,		OP2,		ESC|0x03, 0xe3, 0xff, 0xff},    {"FLDZ", itFldZ,		OP2,		ESC|0x01, 0xee, 0xff, 0xff},    {"FLD1", itFld1,		OP2,		ESC|0x01, 0xe8, 0xff, 0xff},    {"FLDPI", itFldPI,		OP2,		ESC|0x01, 0xeb, 0xff, 0xff},    {"FLDL2T", itFldL2T,	OP2,		ESC|0x01, 0xe9, 0xff, 0xff},    {"FLDL2E", itFldL2E,	OP2,		ESC|0x01, 0xea, 0xff, 0xff},    {"FLDLG2", itFldLG2,	OP2,		ESC|0x01, 0xec, 0xff, 0xff},    {"FLDLN2", itFldLN2,	OP2,		ESC|0x01, 0xed, 0xff, 0xff},    {"FNOP", itFnop,		OP2,		ESC|0x01, 0xd0, 0xff, 0xff},    {"FPATAN", itFpatan,	OP2,		ESC|0x01, 0xf3, 0xff, 0xff},    {"FPREM", itFprem,		OP2,		ESC|0x01, 0xf8, 0xff, 0xff},    {"FPREM1", itFprem1,	OP2,		ESC|0x01, 0xf5, 0xff, 0xff},    {"FPTAN", itFptan,		OP2,		ESC|0x01, 0xf2, 0xff, 0xff},    {"FRNDINT", itFrndint,	OP2,		ESC|0x01, 0xfc, 0xff, 0xff},    {"FSCALE", itFscale,	OP2,		ESC|0x01, 0xfd, 0xff, 0xff},    {"FSIN", itFsin,		OP2,		ESC|0x01, 0xfe, 0xff, 0xff},    {"FSINCOS", itFsincos,	OP2,		ESC|0x01, 0xfb, 0xff, 0xff},    {"FSQRT", itFsqrt,		OP2,		ESC|0x01, 0xfa, 0xff, 0xff},    {"FSTSW", itFstswA,		OP2|AX,		ESC|0x07, 0xe0, 0xff, 0xff},    {"FTST", itFtst,		OP2,		ESC|0x01, 0xe4, 0xff, 0xff},    {"FUCOMPP", itFucompp,	OP2,		ESC|0x02, 0xe9, 0xff, 0xff},    {"FXAM", itFxam,		OP2,		ESC|0x01, 0xe5, 0xff, 0xff},    {"FXTRACT", itFxtract,	OP2,		ESC|0x01, 0xf4, 0xff, 0xff},    {"FYL2X", itFyl2x,		OP2,		ESC|0x01, 0xf1, 0xff, 0xff},    {"FYL2XP1", itFyl2xp1,	OP2,		ESC|0x01, 0xf9, 0xff, 0xff},    {"IMUL", itImulRwiRM,	OP2|MODRM|REG,		0x0f, 0xaf, 0xff, 0xff},    {"INVD", itInvd,		OP2,			0x0f, 0x08, 0xff, 0xff},    {"INVLPG", itInvlpg,	OP2|MODRM,		0x0f, 0x01, 0xff, 0xff},    {"LAR", itLar,		OP2|MODRM|REG,		0x0f, 0x02, 0xff, 0xff},    {"LFS", itLfs,		OP2|MODRM|REG,		0x0f, 0xb4, 0xff, 0xff},    {"LGS", itLgs,		OP2|MODRM|REG,		0x0f, 0xb5, 0xff, 0xff},    {"LSL", itLsl,		OP2|MODRM|REG,		0x0f, 0x03, 0xff, 0xff},    {"LSS", itLss,		OP2|MODRM|REG,		0x0f, 0xb2, 0xff, 0xff},    {"MOV", itMovC,		OP2|DISR|EEE|MODRM,	0x0f, 0x22, 0xff, 0xff},    {"MOV", itMovC,		OP2|DISR|EEE|MODRM,	0x0f, 0x20, 0xff, 0xff},    {"MOV", itMovD,		OP2|DISR|EEE|MODRM,	0x0f, 0x23, 0xff, 0xff},    {"MOV", itMovD,		OP2|DISR|EEE|MODRM,	0x0f, 0x21, 0xff, 0xff},    {"MOV", itMovT,		OP2|DISR|EEE|MODRM,	0x0f, 0x26, 0xff, 0xff},    {"MOV", itMovT,		OP2|DISR|EEE|MODRM,	0x0f, 0x24, 0xff, 0xff},    {"MOVD", itMovd,		OP2|MMXREG|MODRM,	0x0f, 0x7e, 0xff, 0xff},    {"MOVD", itMovd,		OP2|MMXREG|MODRM,	0x0f, 0x6e, 0xff, 0xff},    {"MOVQ", itMovq,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0x6f, 0xff, 0xff},    {"MOVQ", itMovq,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0x7f, 0xff, 0xff},    {"PACKSSDW", itPackssdw,	OP2|MMXREG|MMXRM|MODRM,	0x0f, 0x6b, 0xff, 0xff},    {"PACKSSWB", itPacksswb,	OP2|MMXREG|MMXRM|MODRM,	0x0f, 0x63, 0xff, 0xff},    {"PACKUSWB", itPackuswb,	OP2|MMXREG|MMXRM|MODRM,	0x0f, 0x67, 0xff, 0xff},    {"PAND", itPand,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xdb, 0xff, 0xff},    {"PANDN", itPandn,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xdf, 0xff, 0xff},    {"PMADD", itPmadd,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xf5, 0xff, 0xff},    {"PMULH", itPmulh,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xe5, 0xff, 0xff},    {"PMULL", itPmull,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xd5, 0xff, 0xff},    {"POR", itPor,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xeb, 0xff, 0xff},    {"PXOR", itPxor,		OP2|MMXREG|MMXRM|MODRM,	0x0f, 0xef, 0xff, 0xff},    {"RDTSC", itRdtsc,		OP2,			0x0f, 0x31, 0xff, 0xff},    {"RDMSR", itRdmsr,		OP2,			0x0f, 0x32, 0xff, 0xff},    {"RDPMC", itRdpmc,		OP2,			0x0f, 0x33, 0xff, 0xff},    {"RSM", itRsm,		OP2,			0x0f, 0xaa, 0xff, 0xff},    {"SHLD", itShldRMbyI,	OP2|MODRM|REG|I8,	0x0f, 0xa4, 0xff, 0xff},    {"SHLD", itShldRMbyCL,	OP2|MODRM|REG|CL,	0x0f, 0xa5, 0xff, 0xff},    {"SHRD", itShrdRMbyI,	OP2|MODRM|REG|I8,	0x0f, 0xac, 0xff, 0xff},    {"SHRD", itShrdRMbyCL,	OP2|MODRM|REG|CL,	0x0f, 0xad, 0xff, 0xff},    {"UD2", itUd2,		OP2,			0x0f, 0x0b, 0xff, 0xff},    {"WBINVD", itWbinvd,	OP2,			0x0f, 0x09, 0xff, 0xff},    {"WRMSR", itWrmsr,		OP2,			0x0f, 0x30, 0xff, 0xff},    /* 15 bits mask */    {"CMPXCHG", itCmpxchg,	OP2|WFUL|MODRM|REG,	0x0f, 0xb0, 0xff, 0xfe},    {"MOVSX", itMovsx,		OP2|WFUL|MODRM|REG,	0x0f, 0xbe, 0xff, 0xfe},    {"MOVZX", itMovzx,		OP2|WFUL|MODRM|REG,	0x0f, 0xb6, 0xff, 0xfe},    {"REP INS", itRins,		OP2|WFUL,		0xf3, 0x6c, 0xff, 0xfe},    {"REP LODS", itRlods,	OP2|WFUL,		0xf3, 0xac, 0xff, 0xfe},    {"REP MOVS", itRmovs,	OP2|WFUL,		0xf3, 0xa4, 0xff, 0xfe},    {"REP OUTS", itRouts,	OP2|WFUL,		0xf3, 0x6e, 0xff, 0xfe},    {"REP STOS", itRstos,	OP2|WFUL,		0xf3, 0xaa, 0xff, 0xfe},    {"REPE CMPS", itRcmps,	OP2|WFUL,		0xf3, 0xa6, 0xff, 0xfe},    {"REPE SCAS", itRscas,	OP2|WFUL,		0xf3, 0xae, 0xff, 0xfe},    {"REPNE CMPS", itRNcmps,	OP2|WFUL,		0xf2, 0xa6, 0xff, 0xfe},    {"REPNE SCAS", itRNscas,	OP2|WFUL,		0xf2, 0xae, 0xff, 0xfe},    {"XADD", itXadd,		OP2|WFUL|MODRM|REG,	0x0f, 0xc0, 0xff, 0xfe},    /* 14 + 5 bits mask */    {"PSLL", itPsll,		OP3|GG|MODRM|MMXRM|I8,	0x0f, 0x70, 0xff, 0xfc},    {"PSRA", itPsra,		OP3|GG|MODRM|MMXRM|I8,	0x0f, 0x70, 0xff, 0xfc},    {"PSRL", itPsrl,		OP3|GG|MODRM|MMXRM|I8,	0x0f, 0x70, 0xff, 0xfc},    /* 14 bits mask */    {"PADD", itPadd,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xfc,								0xff, 0xfc},    {"PADDS", itPadds,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xec,								0xff, 0xfc},    {"PADDUS", itPaddus,	OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xdc,								0xff, 0xfc},    {"PCMPEQ", itPcmpeq,	OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0x74,								0xff, 0xfc},    {"PCMPGT", itPcmpgt,	OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0x64,								0xff, 0xfc},    {"PSLL", itPsll,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xf0,								0xff, 0xfc},    {"PSRA", itPsra,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xe0,								0xff, 0xfc},    {"PSRL", itPsrl,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xd0,								0xff, 0xfc},    {"PSUB", itPsub,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xf8,								0xff, 0xfc},    {"PSUBS", itPsubs,		OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xe8,								0xff, 0xfc},    {"PSUBUS", itPsubus,	OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0xd8,								0xff, 0xfc},    {"PUNPCKH", itPunpckh,	OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0x68,								0xff, 0xfc},    {"PUNPCKL", itPunpckl,	OP2|GG|MMXREG|MMXRM|MODRM,	0x0f, 0x60,								0xff, 0xfc},    /* 13 bits mask */    {"BSWAP", itBswap,		OP1|MODRM,		0x0f, 0xc8, 0xff, 0xf8},    {"FCMOVB", itFcmovb,	OP2|ST,		ESC|0x02, 0xc0, 0xff, 0xf8},    {"FCMOVBE", itFcmovbe,	OP2|ST,		ESC|0x02, 0xd0, 0xff, 0xf8},    {"FCMOVE",	itFcmove,	OP2|ST,		ESC|0x02, 0xc8, 0xff, 0xf8},    {"FCMOVU", itFcmovu,	OP2|ST,		ESC|0x02, 0xd8, 0xff, 0xf8},    {"FCMOVNB", itFcmovnb,	OP2|ST,		ESC|0x03, 0xc0, 0xff, 0xf8},    {"FCMOVNBE", itFcmovnbe,	OP2|ST,		ESC|0x03, 0xd0, 0xff, 0xf8},    {"FCMOVNE", itFcmovne,	OP2|ST,		ESC|0x03, 0xc8, 0xff, 0xf8},    {"FCMOVNU", itFcmovnu,	OP2|ST,		ESC|0x03, 0xd8, 0xff, 0xf8},    {"FCOM", itFcomST,		OP2|ST,		ESC|0x00, 0xd0, 0xff, 0xf8},    {"FCOMI", itFcomi,		OP2|ST,		ESC|0x03, 0xf0, 0xff, 0xf8},    {"FCOMP", itFcompST,	OP2|ST,		ESC|0x00, 0xd8, 0xff, 0xf8},    {"FFREE", itFfree,		OP2|ST,		ESC|0x05, 0xc0, 0xff, 0xf8},    {"FLD", itFldST,		OP2|ST,		ESC|0x01, 0xc0, 0xff, 0xf8},    {"FST", itFstST,		OP2|ST,		ESC|0x05, 0xd0, 0xff, 0xf8},    {"FSTP", itFstpST,		OP2|ST,		ESC|0x05, 0xd8, 0xff, 0xf8},    {"FUCOM", itFucom,		OP2|ST,		ESC|0x05, 0xe0, 0xff, 0xf8},    {"FUCOMP", itFucomp,	OP2|ST,		ESC|0x05, 0xe8, 0xff, 0xf8},    {"FXCH", itFxch,		OP2|ST,		ESC|0x01, 0xc8, 0xff, 0xf8},    {"POP", itPopS,		OP2|REG,		0x0f, 0x81, 0xff, 0xc7},    {"PUSH", itPushS,		OP1|SREG3,		0x0f, 0x80, 0xff, 0xc7},    /* 12 + 3 bits mask */    {"CMOV", itCmovcc,		OP3|TTTN|MODRM|REG,	0x0f, 0x40, 0xff, 0xf0},    {"CSET", itCset,		OP3|TTTN|MODRM,		0x0f, 0x90, 0xff, 0xf0},    /* 12 bits mask */    {"CJMPF", itCjmp,		OP2|TTTN|DIS,		0x0f, 0x80, 0xff, 0xf0},    /* 11 bits mask */    {"CALL", itCallRM,		OP1|MODRM,		0xff, 0x10, 0xff, 0x38},    {"CALL", itCallSegRM,	OP1|MODRM,		0xff, 0x18, 0xff, 0x38},    {"FADD", itFaddST,		OP2|POP|FD|ST,	ESC|0x00, 0xc0, 0xf9, 0xf8},    {"FLDbcd", itFldBCDM,	OP1|MODRM,	ESC|0x07, 0x20, 0xff, 0x38},    {"FLDCW", itFldcw,		OP1|MODRM,	ESC|0x01, 0x28, 0xff, 0x38},    {"FLDENV", itFldenv,	OP1|MODRM,	ESC|0x01, 0x20, 0xff, 0x38},    {"FLDext", itFldERM,	OP1|MODRM,	ESC|0x03, 0x28, 0xff, 0x38},    {"FLDint", itFldLIM,	OP1|MODRM,	ESC|0x07, 0x28, 0xff, 0x38},    {"FMUL", itFmulST,		OP2|POP|FD|ST,	ESC|0x00, 0xc8, 0xf9, 0xf8},    {"FRSTOR", itFrstor,	OP1|MODRM,	ESC|0x05, 0x20, 0xff, 0x38},    {"FSAVE", itFsave,		OP1|MODRM,	ESC|0x05, 0x30, 0xff, 0x38},    {"FSTCW", itFstcw,		OP1|MODRM,	ESC|0x01, 0x38, 0xff, 0x38},    {"FSTENV", itFstenv,	OP1|MODRM,	ESC|0x01, 0x30, 0xff, 0x38},    {"FSTPbcd", itFstpBCDM,	OP1|MODRM,	ESC|0x07, 0x30, 0xff, 0x38},    {"FSTPext", itFstpERM,	OP1|MODRM,	ESC|0x03, 0x38, 0xff, 0x38},    {"FSTPint", itFstpLIM,	OP1|MODRM,	ESC|0x07, 0x38, 0xff, 0x38},    {"FSTSW", itFstsw,		OP1|MODRM,	ESC|0x05, 0x38, 0xff, 0x38},    {"IMUL", itImulAwiRM,	OP1|WFUL|MODRM|AX,	0xf6, 0x28, 0xff, 0x38},    {"JMP", itJmpRM,		OP1|MODRM,		0xff, 0x20, 0xff, 0x38},    {"JMP", itJmpSegRM,		OP1|MODRM,		0xff, 0x28, 0xff, 0x38},    {"POP", itPopRM,		OP1|MODRM,		0x8f, 0x00, 0xff, 0x38},    {"PUSH", itPushRM,		OP1|MODRM,		0xff, 0x30, 0xff, 0x38},    /* 10 bits mask */    {"DEC", itDecRM,		OP1|WFUL|MODRM,		0xfe, 0x08, 0xfe, 0x38},    {"DIV", itDiv,		OP1|WFUL|MODRM|AX,	0xf6, 0x30, 0xfe, 0x38},    {"FDIV", itFdivST,		OP2|POP|FD|ST,	ESC|0x00, 0xf0, 0xf9, 0xf0},    {"FSUB", itFsubST,		OP2|POP|FD|ST,	ESC|0x00, 0xe0, 0xf9, 0xf0},    {"IDIV", itIdiv,		OP1|WFUL|MODRM|AX,	0xf6, 0x38, 0xfe, 0x38},    {"INC", itIncRM,		OP1|WFUL|MODRM,		0xfe, 0x00, 0xfe, 0x38},    {"MOV", itMovItoRM,		OP1|WFUL|MODRM|IMM,	0xc6, 0x00, 0xfe, 0x38},    {"MUL", itMulAwiRM,		OP1|WFUL|MODRM|AX,	0xf6, 0x20, 0xfe, 0x38},    {"NEG", itNeg,		OP1|WFUL|MODRM,		0xf6, 0x18, 0xfe, 0x38},    {"NOT", itNot,		OP1|WFUL|MODRM,		0xf6, 0x10, 0xfe, 0x38},    {"TEST", itTestIanRM,	OP1|WFUL|MODRM|IMM,	0xf6, 0x00, 0xfe, 0x38},    /* 9 bits mask */    {"ADD", itAddItoRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x00, 0xfc, 0x38},    {"ADC", itAdcItoRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x10, 0xfc, 0x38},    {"AND", itAndItoRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x20, 0xfc, 0x38},    {"CMP", itCmpIwiRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x38, 0xfc, 0x38},    {"FADD", itFaddIRM,		OP1|MF|MODRM,	ESC|0x00, 0x00, 0xf9, 0x38},    {"FCOM", itFcomIRM,		OP1|MF|MODRM,	ESC|0x00, 0x10, 0xf9, 0x38},    {"FCOMP", itFcompIRM,	OP1|MF|MODRM,	ESC|0x00, 0x18, 0xf9, 0x38},    {"FLD", itFldIRM,		OP1|MF|MODRM,	ESC|0x01, 0x00, 0xf9, 0x38},    {"FMUL", itFmulIRM,		OP1|MF|MODRM,	ESC|0x00, 0x08, 0xf9, 0x38},    {"FST", itFstIRM,		OP1|MF|MODRM,	ESC|0x01, 0x10, 0xf9, 0x38},    {"FSTP", itFstpIRM,		OP1|MF|MODRM,	ESC|0x01, 0x18, 0xf9, 0x38},    {"OR", itOrItoRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x08, 0xfc, 0x38},    {"SBB", itSbbIfrRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x18, 0xfc, 0x38},    {"SUB", itSubIfrRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x28, 0xfc, 0x38},    {"XOR", itXorItoRM,		OP1|SEXT|WFUL|MODRM|IMM,0x80, 0x30, 0xfc, 0x38},    /* 8 bits mask */    {"AAA", itAaa,		OP1,			0x37, 0x00, 0xff, 0x00},    {"AAS", itAas,		OP1,			0x3f, 0x00, 0xff, 0x00},    {"ARPL", itArpl,		OP1|MODRM|REG,		0x63, 0x00, 0xff, 0x00},    {"ASIZE", itAsize,		OP1,			0x67, 0x00, 0xff, 0x00},    {"BOUND", itBound,		OP1|MODRM|REG,		0x62, 0x00, 0xff, 0x00},    {"CALL", itCall,		OP1|DIS,		0xe8, 0x00, 0xff, 0x00},    {"CALL", itCallSeg,		OP1|OFFSEL,		0x9a, 0x00, 0xff, 0x00},    {"CBW", itCbw,		OP1,			0x98, 0x00, 0xff, 0x00},    {"CLC", itClc,		OP1,			0xf8, 0x00, 0xff, 0x00},    {"CLD", itCld,		OP1,			0xfc, 0x00, 0xff, 0x00},    {"CLI", itCli,		OP1,			0xfa, 0x00, 0xff, 0x00},    {"CMC", itCmc,		OP1,			0xf5, 0x00, 0xff, 0x00},    {"CS", itCs,		OP1,			0x2e, 0x00, 0xff, 0x00},    {"CWD", itCwd,		OP1,			0x99, 0x00, 0xff, 0x00},    {"DAA", itDaa,		OP1,			0x27, 0x00, 0xff, 0x00},    {"DAS", itDas,		OP1,			0x2f, 0x00, 0xff, 0x00},    {"DS", itDs,		OP1,			0x3e, 0x00, 0xff, 0x00},    {"ENTER", itEnter,		OP1|D16L8,		0xc8, 0x00, 0xff, 0x00},    {"ES", itEs,		OP1,			0x26, 0x00, 0xff, 0x00},    {"FDIV", itFdivIRM,		OP1|MF|MODRM,	ESC|0x00, 0x30, 0xf9, 0x30},    {"FS", itFs,		OP1,			0x64, 0x00, 0xff, 0x00},    {"FSUB", itFsubIRM,		OP1|MF|MODRM,	ESC|0x00, 0x20, 0xf9, 0x30},    {"GS", itGs,		OP1,			0x65, 0x00, 0xff, 0x00},    {"HLT", itHlt,		OP1,			0xf4, 0x00, 0xff, 0x00},    {"INT", itInt,		OP1|TYPE,		0xcd, 0x00, 0xff, 0x00},    {"INT", itInt3,		OP1,			0xcc, 0x00, 0xff, 0x00},    {"INTO", itInto,		OP1,			0xce, 0x00, 0xff, 0x00},    {"IRET", itIret,		OP1,			0xcf, 0x00, 0xff, 0x00},    {"JECXZ", itJcxz,		OP1|D8,			0xe3, 0x00, 0xff, 0x00},    {"JMP", itJmpS,		OP1|D8,			0xeb, 0x00, 0xff, 0x00},    {"JMP", itJmpD,		OP1|DIS,		0xe9, 0x00, 0xff, 0x00},    {"JMP", itJmpSeg,		OP1|OFFSEL,		0xea, 0x00, 0xff, 0x00},    {"LAHF", itLahf,		OP1,			0x9f, 0x00, 0xff, 0x00},    {"LDS", itLds,		OP1|MODRM|REG,		0xc5, 0x00, 0xff, 0x00},    {"LEA", itLea,		OP1|MODRM|REG,		0x8d, 0x00, 0xff, 0x00},    {"LEAVE", itLeave,		OP1,			0xc9, 0x00, 0xff, 0x00},    {"LES", itLes,		OP1|MODRM|REG,		0xc4, 0x00, 0xff, 0x00},    {"LOCK", itLock,		OP1,			0xf0, 0x00, 0xff, 0x00},    {"LOOP", itLoop,		OP1|D8,			0xe2, 0x00, 0xff, 0x00},    {"LOOPZ", itLoopz,		OP1|D8,			0xe1, 0x00, 0xff, 0x00},    {"LOOPNZ", itLoopnz,	OP1|D8,			0xe0, 0x00, 0xff, 0x00},    {"NOP", itNop,		OP1,			0x90, 0x00, 0xff, 0x00},    {"OSIZE", itOsize,		OP1,			0x66, 0x00, 0xff, 0x00},    {"POPA", itPopa,		OP1,			0x61, 0x00, 0xff, 0x00},    {"POPF", itPopf,		OP1,			0x9d, 0x00, 0xff, 0x00},    {"PUSHA", itPusha,		OP1,			0x60, 0x00, 0xff, 0x00},    {"PUSHF", itPushf,		OP1,			0x9c, 0x00, 0xff, 0x00},    {"REP", itRep,		OP1,			0xf3, 0x00, 0xff, 0x00},    {"REPNE", itRepNe,		OP1,			0xf2, 0x00, 0xff, 0x00},    {"RET", itRet,		OP1,			0xc3, 0x00, 0xff, 0x00},    {"RET", itRetI,		OP1|D16,		0xc2, 0x00, 0xff, 0x00},    {"RET", itRetSeg,		OP1,			0xcb, 0x00, 0xff, 0x00},    {"RET", itRetSegI,		OP1|D16,		0xca, 0x00, 0xff, 0x00},    {"SAHF", itSahf,		OP1,			0x9e, 0x00, 0xff, 0x00},    {"SS", itSs,		OP1,			0x36, 0x00, 0xff, 0x00},    {"STC", itStc,		OP1,			0xf9, 0x00, 0xff, 0x00},    {"STD", itStd,		OP1,			0xfd, 0x00, 0xff, 0x00},    {"STI", itSti,		OP1,			0xfb, 0x00, 0xff, 0x00},    {"WAIT", itWait,		OP1,			0x9b, 0x00, 0xff, 0x00},    {"XLAT", itXlat,		OP1|WFUL,		0xd7, 0x00, 0xff, 0x00},    /* 7 bits mask */    {"ADC", itAdcItoA,		SF|WFUL|IMM|AX,		0x14, 0x00, 0xfe, 0x00},    {"ADD", itAddItoA,		SF|WFUL|IMM|AX,		0x04, 0x00, 0xfe, 0x00},    {"AND", itAndItoA,		SF|WFUL|IMM|AX,		0x24, 0x00, 0xfe, 0x00},    {"CMP", itCmpIwiA,		SF|WFUL|IMM|AX,		0x3c, 0x00, 0xfe, 0x00},    {"CMPS", itCmps,		OP1|WFUL,		0xa6, 0x00, 0xfe, 0x00},    {"IMUL", itImulRMwiI,	OP1|SEXT|MODRM|REG|IMM,	0x69, 0x00, 0xfd, 0x00},    {"IN", itInF,		OP1|WFUL|PORT|AX,	0xe4, 0x00, 0xfe, 0x00},    {"IN", itInV,		OP1|WFUL|AX,		0xec, 0x00, 0xfe, 0x00},    {"INS", itIns,		OP1|WFUL,		0x6c, 0x00, 0xfe, 0x00},    {"LODS", itLods,		OP1|WFUL,		0xac, 0x00, 0xfe, 0x00},    {"MOV", itMovRMtoS,		OP1|DISR|MODRM|SREG3,	0x8c, 0x00, 0xfd, 0x00},    {"MOVS", itMovs,		OP1|WFUL,		0xa4, 0x00, 0xfe, 0x00},    {"OR", itOrItoA,		SF|WFUL|IMM|AX,		0x0c, 0x00, 0xfe, 0x00},    {"OUT", itOutF,		OP1|WFUL|PORT|AX,	0xe6, 0x00, 0xfe, 0x00},    {"OUT", itOutV,		OP1|WFUL|AX,		0xee, 0x00, 0xfe, 0x00},    {"OUTS", itOuts,		OP1|WFUL,		0x6e, 0x00, 0xfe, 0x00},    {"PUSH", itPushI,		OP1|SEXT|IMM,		0x68, 0x00, 0xfd, 0x00},

⌨️ 快捷键说明

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