insx86.h
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 576 行 · 第 1/4 页
H
576 行
/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: Table of x86 opcodes and corresponding decode routines.
* without extension 3DNow!, MMX, SSE, SSE2 and SSE3
*
****************************************************************************/
/*
* It must be processed as first instruction table before any others
* It is opcode map with full prefix processing.
*
*/
/*
Idx, Name, Opcode, Mask, Handler
*/
// PREFIXES
inspick( opnd_pr, "opnd", 0X00000066, 0x000000ff, X86PrefixOpnd )
inspick( addr_pr, "addr", 0X00000067, 0x000000ff, X86PrefixAddr )
inspick( repe_pr, "repe", 0x000000f3, 0x000000ff, X86PrefixRepe )
inspick( rep_pr, "rep", 0x00000000, 0x00000000, NULL )
inspick( repne_pr, "repne", 0x000000f2, 0x000000ff, X86PrefixRepne )
inspick( cs_pr, "cs", 0x0000002e, 0x000000ff, X86PrefixCS )
inspick( ss_pr, "ss", 0x00000036, 0x000000ff, X86PrefixSS )
inspick( ds_pr, "ds", 0x0000003e, 0x000000ff, X86PrefixDS )
inspick( es_pr, "es", 0x00000026, 0x000000ff, X86PrefixES )
inspick( fs_pr, "fs", 0x00000064, 0x000000ff, X86PrefixFS )
inspick( gs_pr, "gs", 0x00000065, 0x000000ff, X86PrefixGS )
inspick( lock_pr, "lock", 0x000000f0, 0x000000ff, X86PrefixLock )
inspick( fwait, "fwait", 0x0000009b, 0x000000ff, X86PrefixFwait )
// Instructions
inspick( aaa, "aaa", 0x00000037, 0x000000ff, X86NoOp_8)
inspick( aad, "aad", 0x00000ad5, 0x0000ffff, X86NoOp_16)
inspick( aam, "aam", 0x00000ad4, 0x0000ffff, X86NoOp_16)
inspick( aas, "aas", 0x0000003f, 0x000000ff, X86NoOp_8)
inspick( adc, "adc", 0x00000010, 0x000000fc, X86RegModRM_16)
inspick( adc2, "adc", 0x00000014, 0x000000fe, X86ImmAcc_8)
inspick( adc3, "adc", 0x00001080, 0x000038fc, X86ModRMImm_16)
inspick( add, "add", 0x00000000, 0x000000fc, X86RegModRM_16)
inspick( add2, "add", 0x00000004, 0x000000fe, X86ImmAcc_8)
inspick( add3, "add", 0x00000080, 0x000038fc, X86ModRMImm_16)
inspick( and, "and", 0x00000020, 0x000000fc, X86RegModRM_16)
inspick( and2, "and", 0x00000024, 0x000000fe, X86ImmAcc_8)
inspick( and3, "and", 0x00002080, 0x000038fc, X86ModRMImm_16)
inspick( arpl, "arpl", 0x00000063, 0x000000ff, X86RegModRM_16B)
inspick( bound, "bound", 0x00000062, 0x000000ff, X86RegModRM_bound)
inspick( bsf, "bsf", 0x0000bc0f, 0x0000ffff, X86RegModRM_24B)
inspick( bsr, "bsr", 0x0000bd0f, 0x0000ffff, X86RegModRM_24B)
inspick( bswap, "bswap", 0x0000c80f, 0x0000f8ff, X86Reg_16)
inspick( bt, "bt", 0x0000a30f, 0x0000ffff, X86RegModRM_24B)
inspick( bt2, "bt", 0x0020ba0f, 0x0038ffff, X86ModRMImm_24)
inspick( btc, "btc", 0x0000bb0f, 0x0000ffff, X86RegModRM_24B)
inspick( btc2, "btc", 0x0038ba0f, 0x0038ffff, X86ModRMImm_24)
inspick( btr, "btr", 0x0000b30f, 0x0000ffff, X86RegModRM_24B)
inspick( btr2, "btr", 0x0030ba0f, 0x0038ffff, X86ModRMImm_24)
inspick( bts, "bts", 0x0000ab0f, 0x0000ffff, X86RegModRM_24B)
inspick( bts2, "bts", 0x0028ba0f, 0x0038ffff, X86ModRMImm_24)
inspick( call, "call", 0x000000e8, 0x000000ff, X86Rel_8)
inspick( call2, "call", 0x000010ff, 0x000038ff, X86ModRM_16)
inspick( call3, "call", 0x0000009a, 0x000000ff, X86Abs_8)
inspick( call4, "call", 0x000018ff, 0x000038ff, X86ModRM_16)
inspick( cbw, "cbw", 0x00000098, 0x000000ff, X86NoOp_8)
// Same as cwd
inspick( cdq, "cdq", 0x00000000, 0x00000000, NULL)
inspick( clc, "clc", 0x000000f8, 0x000000ff, X86NoOp_8)
inspick( cld, "cld", 0x000000fc, 0x000000ff, X86NoOp_8)
inspick( cli, "cli", 0x000000fa, 0x000000ff, X86NoOp_8)
inspick( clts, "clts", 0x0000060f, 0x0000ffff, X86NoOp_16)
inspick( cmc, "cmc", 0x000000f5, 0x000000ff, X86NoOp_8)
inspick( cmp, "cmp", 0x00000038, 0x000000fc, X86RegModRM_16)
inspick( cmp2, "cmp", 0x0000003c, 0x000000fe, X86ImmAcc_8)
inspick( cmp3, "cmp", 0x00003880, 0x000038fc, X86ModRMImm_16)
inspick( cmps, "cmps", 0x000000a6, 0x000000fe, X86String_8)
inspick( cmpxchg, "cmpxchg", 0x0000b00f, 0x0000feff, X86RegModRM_24)
inspick( cmpxchg8b, "cmpxchg8b", 0x0008c70f, 0x0038ffff, X86ModRM_24)
inspick( cmovo, "cmovo", 0x0000400f, 0x0000ffff, X86MovCC_24)
inspick( cmovno, "cmovno", 0x0000410f, 0x0000ffff, X86MovCC_24)
inspick( cmovb, "cmovb", 0x0000420f, 0x0000ffff, X86MovCC_24)
inspick( cmovae, "cmovae", 0x0000430f, 0x0000ffff, X86MovCC_24)
inspick( cmove, "cmove", 0x0000440f, 0x0000ffff, X86MovCC_24)
inspick( cmovne, "cmovne", 0x0000450f, 0x0000ffff, X86MovCC_24)
inspick( cmovbe, "cmovbe", 0x0000460f, 0x0000ffff, X86MovCC_24)
inspick( cmova, "cmova", 0x0000470f, 0x0000ffff, X86MovCC_24)
inspick( cmovs, "cmovs", 0x0000480f, 0x0000ffff, X86MovCC_24)
inspick( cmovns, "cmovns", 0x0000490f, 0x0000ffff, X86MovCC_24)
inspick( cmovp, "cmovp", 0x00004a0f, 0x0000ffff, X86MovCC_24)
inspick( cmovpo, "cmovpo", 0x00004b0f, 0x0000ffff, X86MovCC_24)
inspick( cmovl, "cmovl", 0x00004c0f, 0x0000ffff, X86MovCC_24)
inspick( cmovge, "cmovge", 0x00004d0f, 0x0000ffff, X86MovCC_24)
inspick( cmovle, "cmovle", 0x00004e0f, 0x0000ffff, X86MovCC_24)
inspick( cmovg, "cmovg", 0x00004f0f, 0x0000ffff, X86MovCC_24)
inspick( cpuid, "cpuid", 0x0000a20f, 0x0000ffff, X86NoOp_16)
inspick( cwd, "cwd", 0x00000099, 0x000000ff, X86NoOp_8)
// Same as cbw
inspick( cwde, "cwde", 0x00000000, 0x00000000, NULL)
inspick( daa, "daa", 0x00000027, 0x000000ff, X86NoOp_8)
inspick( das, "das", 0x0000002f, 0x000000ff, X86NoOp_8)
inspick( dec, "dec", 0x000008fe, 0x000038fe, X86ModRM_16)
inspick( dec2, "dec", 0X00000048, 0x000000f8, X86Reg_8)
inspick( div, "div", 0X000030f6, 0x000038fe, X86ModRM_16)
inspick( enter, "enter", 0X000000c8, 0x000000ff, X86ImmImm_8)
inspick( halt, "hlt", 0x000000f4, 0x000000ff, X86NoOp_8)
inspick( idiv, "idiv", 0X000038f6, 0x000038fe, X86ModRM_16)
inspick( imul, "imul", 0X000028f6, 0x000038fe, X86ModRM_16)
inspick( imul2, "imul", 0X0000af0f, 0x0000ffff, X86RegModRM_24B)
inspick( imul3, "imul", 0X00000069, 0x000000fd, X86RegModRM_16B)
inspick( in, "in", 0X000000e4, 0x000000fe, X86ImmAcc_8)
inspick( in2, "in", 0X000000ec, 0x000000fe, X86AccAcc_8)
inspick( inc, "inc", 0x000000fe, 0x000038fe, X86ModRM_16)
inspick( inc2, "inc", 0X00000040, 0x000000f8, X86Reg_8)
inspick( ins, "ins", 0x0000006c, 0x000000fe, X86String_8)
inspick( int, "int", 0x000000cc, 0x000000fe, X86Imm_8)
inspick( into, "into", 0x000000ce, 0x000000ff, X86NoOp_8)
inspick( invd, "invd", 0x0000080f, 0x0000ffff, X86NoOp_16)
inspick( invlpg, "invlpg", 0x0038010f, 0x0038ffff, X86ModRM_24)
inspick( iret, "iret", 0x000000cf, 0x000000ff, X86NoOp_8)
inspick( iretd, "iretd", 0x00000000, 0x00000000, NULL)
inspick( jo, "jo", 0x00000070, 0x000000ff, X86JmpCC_8)
inspick( jno, "jno", 0x00000071, 0x000000ff, X86JmpCC_8)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?