inssparc.h

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

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


#define op1(a)          ((a##ul)<<30)
#define op2(a,b)        (op1(a)+((b##ul)<<22))
#define op3(a,b)        (op1(a)+((b##ul)<<19))
#define opb(a,b,c)      (op1(a)+((b##ul)<<25)+((c##ul)<<22))
#define opf(a,b,c)      (op1(a)+((b##ul)<<19)+((c##ul)<<5))
#define OP0             (op1(0x3))
#define OP2             (op2(0x3,0x7))
#define OP3             (op3(0x3,0x3f))
#define OPB             (opb(0x3,0x0f,0x07))
#define OPF             (opf(0x3,0x3f,0x1ff))

/*
      Idx,              Name,           Opcode,         Mask,           Handler
*/
inspick( fitos,         "fitos",        opf(2,0x34,0xc4), OPF,         SPARCFPop2 )
inspick( fdtos,         "fdtos",        opf(2,0x34,0xc6), OPF,         SPARCFPop2 )
inspick( fqtos,         "fqtos",        opf(2,0x34,0xc7), OPF,         SPARCFPop2 )
inspick( fitod,         "fitod",        opf(2,0x34,0xc8), OPF,         SPARCFPop2 )
inspick( fstod,         "fstod",        opf(2,0x34,0xc9), OPF,         SPARCFPop2 )
inspick( fqtod,         "fqtod",        opf(2,0x34,0xcb), OPF,         SPARCFPop2 )
inspick( fitoq,         "fitoq",        opf(2,0x34,0xcc), OPF,         SPARCFPop2 )
inspick( fstoq,         "fstoq",        opf(2,0x34,0xcd), OPF,         SPARCFPop2 )
inspick( fdtoq,         "fdtoq",        opf(2,0x34,0xce), OPF,         SPARCFPop2 )
inspick( fstoi,         "fstoi",        opf(2,0x34,0xd1), OPF,         SPARCFPop2 )
inspick( fdtoi,         "fdtoi",        opf(2,0x34,0xd2), OPF,         SPARCFPop2 )
inspick( fqtoi,         "fqtoi",        opf(2,0x34,0xd3), OPF,         SPARCFPop2 )

inspick( fmovs,         "fmovs",        opf(2,0x34,0x01), OPF,         SPARCFPop2 )
inspick( fnegs,         "fnegs",        opf(2,0x34,0x05), OPF,         SPARCFPop2 )
inspick( fabss,         "fabss",        opf(2,0x34,0x09), OPF,         SPARCFPop2 )

inspick( fsqrts,        "fsqrts",       opf(2,0x34,0x29), OPF,         SPARCFPop2 )
inspick( fsqrtd,        "fsqrtd",       opf(2,0x34,0x2a), OPF,         SPARCFPop2 )
inspick( fsqrtq,        "fsqrtq",       opf(2,0x34,0x2b), OPF,         SPARCFPop2 )

inspick( fcmps,         "fcmps",        opf(2,0x35,0x51), OPF,         SPARCFPop2 )
inspick( fcmpd,         "fcmpd",        opf(2,0x35,0x52), OPF,         SPARCFPop2 )
inspick( fcmpq,         "fcmpq",        opf(2,0x35,0x53), OPF,         SPARCFPop2 )
inspick( fcmpes,        "fcmpes",       opf(2,0x35,0x55), OPF,         SPARCFPop2 )
inspick( fcmped,        "fcmped",       opf(2,0x35,0x56), OPF,         SPARCFPop2 )
inspick( fcmpeq,        "fcmpeq",       opf(2,0x35,0x57), OPF,         SPARCFPop2 )

inspick( fadds,         "fadds",        opf(2,0x34,0x41), OPF,         SPARCFPop3 )
inspick( faddd,         "faddd",        opf(2,0x34,0x42), OPF,         SPARCFPop3 )
inspick( faddq,         "faddq",        opf(2,0x34,0x43), OPF,         SPARCFPop3 )
inspick( fsubs,         "fsubs",        opf(2,0x34,0x45), OPF,         SPARCFPop3 )
inspick( fsubd,         "fsubd",        opf(2,0x34,0x46), OPF,         SPARCFPop3 )
inspick( fsubq,         "fsubq",        opf(2,0x34,0x47), OPF,         SPARCFPop3 )
inspick( fmuls,         "fmuls",        opf(2,0x34,0x49), OPF,         SPARCFPop3 )
inspick( fmuld,         "fmuld",        opf(2,0x34,0x4a), OPF,         SPARCFPop3 )
inspick( fmulq,         "fmulq",        opf(2,0x34,0x4b), OPF,         SPARCFPop3 )
inspick( fdivs,         "fdivs",        opf(2,0x34,0x4d), OPF,         SPARCFPop3 )
inspick( fdivd,         "fdivd",        opf(2,0x34,0x4e), OPF,         SPARCFPop3 )
inspick( fdivq,         "fdivq",        opf(2,0x34,0x4f), OPF,         SPARCFPop3 )
inspick( fsmuld,        "fsmuld",       opf(2,0x34,0x69), OPF,         SPARCFPop3 )
inspick( fdmulq,        "fdmulq",       opf(2,0x34,0x6e), OPF,         SPARCFPop3 )


inspick( ldsb,          "ldsb",         op3(3,0x09),    OP3,            SPARCMem )
inspick( ldsh,          "ldsh",         op3(3,0x0a),    OP3,            SPARCMem )
inspick( ldub,          "ldub",         op3(3,0x01),    OP3,            SPARCMem )
inspick( lduh,          "lduh",         op3(3,0x02),    OP3,            SPARCMem )
inspick( ld,            "ld",           op3(3,0x00),    OP3,            SPARCMem )
inspick( ldd,           "ldd",          op3(3,0x03),    OP3,            SPARCMem )
inspick( ldsba,         "ldsba",        op3(3,0x19),    OP3,            SPARCMem )
inspick( ldsha,         "ldsha",        op3(3,0x1a),    OP3,            SPARCMem )
inspick( lduba,         "lduba",        op3(3,0x11),    OP3,            SPARCMem )
inspick( lduha,         "lduha",        op3(3,0x12),    OP3,            SPARCMem )
inspick( lda,           "lda",          op3(3,0x10),    OP3,            SPARCMem )
inspick( ldda,          "ldda",         op3(3,0x13),    OP3,            SPARCMem )

inspick( ldf,           "ld",           op3(3,0x20),    OP3,            SPARCMemF )
inspick( lddf,          "ldd",          op3(3,0x23),    OP3,            SPARCMemF )
inspick( ldfsr,         "ld",           op3(3,0x21),    OP3,            SPARCMemF )

inspick( ldc,           "ld",           op3(3,0x30),    OP3,            SPARCMemC )
inspick( lddc,          "ldd",          op3(3,0x33),    OP3,            SPARCMemC )
inspick( ldcsr,         "ld",           op3(3,0x31),    OP3,            SPARCMemC )

inspick( stb,           "stb",          op3(3,0x05),    OP3,            SPARCMem )
inspick( sth,           "sth",          op3(3,0x06),    OP3,            SPARCMem )
inspick( st,            "st",           op3(3,0x04),    OP3,            SPARCMem )
inspick( std,           "std",          op3(3,0x07),    OP3,            SPARCMem )
inspick( stba,          "stba",         op3(3,0x15),    OP3,            SPARCMem )
inspick( stha,          "stha",         op3(3,0x16),    OP3,            SPARCMem )
inspick( sta,           "sta",          op3(3,0x14),    OP3,            SPARCMem )
inspick( stda,          "stda",         op3(3,0x17),    OP3,            SPARCMem )

inspick( stf,           "st",           op3(3,0x24),    OP3,            SPARCMemF )
inspick( stdf,          "std",          op3(3,0x27),    OP3,            SPARCMemF )
inspick( stfsr,         "st",           op3(3,0x25),    OP3,            SPARCMemF )

⌨️ 快捷键说明

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