insppc.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 288 行 · 第 1/2 页

H
288
字号
/****************************************************************************
*
*                            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 PowerPC opcodes and corresponding decode routines.
*
****************************************************************************/


#define u(a)    ((a##ul)<<26)
#define v(a,b)  (u(a) + ((b##ul)<<1))
#define w(a,b)  (u(a) + (b##ul))
#define x(a,b)  (u(a) + ((b##ul)<<2))
/*
      Idx,              Name,           Opcode,         Mask,           Handler
*/
inspick( abs,           "abs",          v(31,360),      0xFC00FBFE,     PPCMathda )
inspick( add,           "add",          v(31,266),      0xFC0003FE,     PPCMath )
inspick( addc,          "addc",         v(31, 10),      0xFC0003FE,     PPCMath )
inspick( adde,          "adde",         v(31,138),      0xFC0003FE,     PPCMath )
inspick( addi,          "addi",         u(14),          0xFC000000,     PPCImmediate )
inspick( addic,         "addic",        u(12),          0xFC000000,     PPCImmediate )
inspick( addic_dot,     "addic.",       u(13),          0xFC000000,     PPCImmediate )
inspick( addis,         "addis",        u(15),          0xFC000000,     PPCImmediate )
inspick( addme,         "addme",        v(31,234),      0xFC00FBFE,     PPCMathda )
inspick( addze,         "addze",        v(31,202),      0xFC00FBFE,     PPCMathda )
inspick( and,           "and",          v(31, 28),      0xFC0007FE,     PPCMath )
inspick( andc,          "andc",         v(31, 60),      0xFC0007FE,     PPCMath )
inspick( andi_dot,      "andi.",        u(28),          0xFC000000,     PPCImmediate )
inspick( andis_dot,     "andis.",       u(29),          0xFC000000,     PPCImmediate )
inspick( b,             "b",            u(18),          0xFC000000,     PPCBranch )
inspick( bc,            "bc",           u(16),          0xFC000000,     PPCBranch )
inspick( bcctr,         "bcctr",        v(19,528),      0xFC00FFFE,     PPCBranch )
inspick( bclr,          "bclr",         v(19, 16),      0xFC00FFFE,     PPCBranch )
inspick( clcs,          "clcs",         v(31,531),      0xFC00FFFE,     PPCMathda )
inspick( cmp,           "cmp",          v(31,  0),      0xFC4007FF,     PPCCompare )
inspick( cmpi,          "cmpi",         u(11),          0xFC400000,     PPCCompare )
inspick( cmpl,          "cmpl",         v(31, 32),      0xFC4007FF,     PPCCompare )
inspick( cmpli,         "cmpli",        u(10),          0xFC400000,     PPCCompare )
inspick( cntlzd,        "cntlzd",       v(31, 58),      0xFC00FFFE,     PPCMathsa )
inspick( cntlzw,        "cntlzw",       v(31, 26),      0xFC00FFFE,     PPCMathsa )
inspick( crand,         "crand",        v(19,257),      0xFC0007FF,     PPCCondition )
inspick( crandc,        "crandc",       v(19,129),      0xFC0007FF,     PPCCondition )
inspick( creqv,         "creqv",        v(19,289),      0xFC0007FF,     PPCCondition )
inspick( crnand,        "crnand",       v(19,225),      0xFC0007FF,     PPCCondition )
inspick( crnor,         "crnor",        v(19, 33),      0xFC0007FF,     PPCCondition )
inspick( cror,          "cror",         v(19,449),      0xFC0007FF,     PPCCondition )
inspick( crorc,         "crorc",        v(19,417),      0xFC0007FF,     PPCCondition )
inspick( crxor,         "crxor",        v(19,193),      0xFC0007FF,     PPCCondition )
inspick( dcbf,          "dcbf",         v(31, 86),      0xFFE007FF,     PPCMathab )
inspick( dcbi,          "dcbi",         v(31,470),      0xFFE007FF,     PPCMathab )
inspick( dcbst,         "dcbst",        v(31, 54),      0xFFE007FF,     PPCMathab )
inspick( dcbt,          "dcbt",         v(31,278),      0xFFE007FF,     PPCMathab )
inspick( dcbtst,        "dcbtst",       v(31,246),      0xFFE007FF,     PPCMathab )
inspick( dcbz,          "dcbz",         v(31,1014),     0xFFE007FF,     PPCMathab )
inspick( div,           "div",          v(31,331),      0xFC0003FE,     PPCMath )
inspick( divd,          "divd",         v(31,489),      0xFC0003FE,     PPCMath )
inspick( divdu,         "divdu",        v(31,457),      0xFC0003FE,     PPCMath )
inspick( divs,          "divs",         v(31,363),      0xFC0003FE,     PPCMath )
inspick( divw,          "divw",         v(31,491),      0xFC0003FE,     PPCMath )
inspick( divwu,         "divwu",        v(31,459),      0xFC0003FE,     PPCMath )
inspick( doz,           "doz",          v(31,264),      0xFC0003FE,     PPCMath )
inspick( dozi,          "dozi",         u( 9),          0xFC000000,     PPCImmediate )
inspick( eciwx,         "eciwx",        v(31,310),      0xFC0007FF,     PPCMath )
inspick( ecowx,         "ecowx",        v(31,438),      0xFC0007FF,     PPCMath )
inspick( eieio,         "eieio",        v(31,854),      0xFC0007FF,     PPCNull )
inspick( eqv,           "eqv",          v(31,284),      0xFC0007FE,     PPCMath2 )
inspick( extsb,         "extsb",        v(31,954),      0xFC00FFFE,     PPCMathsa )
inspick( extsh,         "extsh",        v(31,922),      0xFC00FFFE,     PPCMathsa )
inspick( extsw,         "extsw",        v(31,986),      0xFC00FFFE,     PPCMathsa )
inspick( fabs,          "fabs",         v(63,264),      0xFC1F07FE,     PPCFloatdb )
inspick( fadd,          "fadd",         v(63, 21),      0xFC0007FE,     PPCFloatdab )
inspick( fadds,         "fadds",        v(59, 21),      0xFC0007FE,     PPCFloatdab )
inspick( fcfid,         "fcfid",        v(63,846),      0xFC1F07FE,     PPCFloatdb )
inspick( fcmpo,         "fcmpo",        v(63, 32),      0xFC6007FF,     PPCFloatCmpab )
inspick( fcmpu,         "fcmpu",        v(63,  0),      0xFC6007FF,     PPCFloatCmpab )
inspick( fctid,         "fctid",        v(63,814),      0xFC1F07FE,     PPCFloatdb )
inspick( fctidz,        "fctidz",       v(63,815),      0xFC1F07FE,     PPCFloatdb )
inspick( fctiw,         "fctiw",        v(63, 14),      0xFC1F07FE,     PPCFloatdb )
inspick( fctiwz,        "fctiwz",       v(63, 15),      0xFC1F07FE,     PPCFloatdb )
inspick( fdiv,          "fdiv",         v(63, 18),      0xFC0007FE,     PPCFloatdab )
inspick( fdivs,         "fdivs",        v(59, 18),      0xFC0007FE,     PPCFloatdab )
inspick( fmadd,         "fmadd",        v(63, 29),      0xFC00003E,     PPCFloat )
inspick( fmadds,        "fmadds",       v(59, 29),      0xFC00003E,     PPCFloat )
inspick( fmr,           "fmr",          v(63, 72),      0xFC1F07FE,     PPCFloatdb )
inspick( fmsub,         "fmsub",        v(63, 28),      0xFC00003E,     PPCFloat )
inspick( fmsubs,        "fmsubs",       v(59, 28),      0xFC00003E,     PPCFloat )
inspick( fmul,          "fmul",         v(63, 25),      0xFC00F83E,     PPCFloatdac )
inspick( fmuls,         "fmuls",        v(59, 25),      0xFC00F83E,     PPCFloatdac )
inspick( fnabs,         "fnabs",        v(63,136),      0xFC1F07FE,     PPCFloatdb )
inspick( fneg,          "fneg",         v(63, 40),      0xFC1F07FE,     PPCFloatdb )
inspick( fnmadd,        "fnmadd",       v(63, 31),      0xFC00003E,     PPCFloat )
inspick( fnmadds,       "fnmadds",      v(59, 31),      0xFC00003E,     PPCFloat )
inspick( fnmsub,        "fnmsub",       v(63, 30),      0xFC00003E,     PPCFloat )
inspick( fnmsubs,       "fnmsubs",      v(59, 30),      0xFC00003E,     PPCFloat )
inspick( frsp,          "frsp",         v(63, 12),      0xFC1F07FE,     PPCFloatdb )
inspick( fsub,          "fsub",         v(63, 20),      0xFC0007FE,     PPCFloatdab )
inspick( fsubs,         "fsubs",        v(59, 20),      0xFC0007FE,     PPCFloatdab )
inspick( icbi,          "icbi",         v(31,982),      0xFFE007FF,     PPCMathab )
inspick( isync,         "isync",        v(19,150),      0xFFFFFFFF,     PPCNull )
inspick( lbz,           "lbz",          u(34),          0xFC000000,     PPCMem1 )
inspick( lbzu,          "lbzu",         u(35),          0xFC000000,     PPCMem1 )
inspick( lbzux,         "lbzux",        v(31,119),      0xFC0007FF,     PPCMem2 )
inspick( lbzx,          "lbzx",         v(31, 87),      0xFC0007FF,     PPCMem2 )
inspick( ld,            "ld",           w(58,0),        0xFC000003,     PPCMemD1 )
inspick( ldarx,         "ldarx",        v(31, 84),      0xFC0007FF,     PPCMemD2 )
inspick( ldu,           "ldu",          w(58,1),        0xFC000003,     PPCMemD1 )
inspick( ldux,          "ldux",         v(31, 53),      0xFC0007FF,     PPCMemD2 )
inspick( ldx,           "ldx",          v(31, 21),      0xFC0007FF,     PPCMemD2 )
inspick( lfd,           "lfd",          u(50),          0xFC000000,     PPCFloatMem1 )
inspick( lfdu,          "lfdu",         u(51),          0xFC000000,     PPCFloatMem1 )
inspick( lfdux,         "lfdux",        v(31,631),      0xFC0007FF,     PPCFloatMem2 )
inspick( lfdx,          "lfdx",         v(31,599),      0xFC0007FF,     PPCFloatMem2 )
inspick( lfs,           "lfs",          u(48),          0xFC000000,     PPCFloatMem1 )
inspick( lfsu,          "lfsu",         u(49),          0xFC000000,     PPCFloatMem1 )
inspick( lfsux,         "lfsux",        v(31,567),      0xFC0007FF,     PPCFloatMem2 )
inspick( lfsx,          "lfsx",         v(31,535),      0xFC0007FF,     PPCFloatMem2 )
inspick( lha,           "lha",          u(42),          0xFC000000,     PPCMem1 )
inspick( lhau,          "lhau",         u(43),          0xFC000000,     PPCMem1 )
inspick( lhaux,         "lhaux",        v(31,375),      0xFC0007FF,     PPCMem2 )
inspick( lhax,          "lhax",         v(31,343),      0xFC0007FF,     PPCMem2 )
inspick( lhbrx,         "lhbrx",        v(31,790),      0xFC0007FF,     PPCMem2 )

⌨️ 快捷键说明

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