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