fr30-opc.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 1,370 行 · 第 1/3 页

C
1,370
字号
/* Instruction opcode table for fr30.THIS FILE IS MACHINE GENERATED WITH CGEN.Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.This file is part of the GNU Binutils and/or GDB, the GNU debugger.This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public License alongwith this program; if not, write to the Free Software Foundation, Inc.,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*/#include "sysdep.h"#include "ansidecl.h"#include "bfd.h"#include "symcat.h"#include "fr30-desc.h"#include "fr30-opc.h"#include "libiberty.h"/* The hash functions are recorded here to help keep assembler code out of   the disassembler and vice versa.  */static int asm_hash_insn_p PARAMS ((const CGEN_INSN *));static unsigned int asm_hash_insn PARAMS ((const char *));static int dis_hash_insn_p PARAMS ((const CGEN_INSN *));static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT));/* Instruction formats.  */#define F(f) & fr30_cgen_ifld_table[CONCAT2 (FR30_,f)]static const CGEN_IFMT ifmt_empty = {  0, 0, 0x0, { { 0 } }};static const CGEN_IFMT ifmt_add = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_RJ) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_addi = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_U4) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_add2 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_M4) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_div0s = {  16, 16, 0xfff0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_div3 = {  16, 16, 0xffff, { { F (F_OP1) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_OP4) }, { 0 } }};static const CGEN_IFMT ifmt_ldi8 = {  16, 16, 0xf000, { { F (F_OP1) }, { F (F_I8) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldi20 = {  16, 32, 0xff00, { { F (F_OP1) }, { F (F_I20) }, { F (F_OP2) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldi32 = {  16, 48, 0xfff0, { { F (F_OP1) }, { F (F_I32) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldr14 = {  16, 16, 0xf000, { { F (F_OP1) }, { F (F_DISP10) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldr14uh = {  16, 16, 0xf000, { { F (F_OP1) }, { F (F_DISP9) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldr14ub = {  16, 16, 0xf000, { { F (F_OP1) }, { F (F_DISP8) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldr15 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_UDISP6) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_ldr15dr = {  16, 16, 0xfff0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_RS2) }, { 0 } }};static const CGEN_IFMT ifmt_movdr = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_RS1) }, { F (F_RI) }, { 0 } }};static const CGEN_IFMT ifmt_call = {  16, 16, 0xf800, { { F (F_OP1) }, { F (F_OP5) }, { F (F_REL12) }, { 0 } }};static const CGEN_IFMT ifmt_int = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_U8) }, { 0 } }};static const CGEN_IFMT ifmt_brad = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_CC) }, { F (F_REL9) }, { 0 } }};static const CGEN_IFMT ifmt_dmovr13 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_DIR10) }, { 0 } }};static const CGEN_IFMT ifmt_dmovr13h = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_DIR9) }, { 0 } }};static const CGEN_IFMT ifmt_dmovr13b = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_DIR8) }, { 0 } }};static const CGEN_IFMT ifmt_copop = {  16, 32, 0xfff0, { { F (F_OP1) }, { F (F_CCC) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_CRJ) }, { F (F_U4C) }, { F (F_CRI) }, { 0 } }};static const CGEN_IFMT ifmt_copld = {  16, 32, 0xfff0, { { F (F_OP1) }, { F (F_CCC) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_RJC) }, { F (F_U4C) }, { F (F_CRI) }, { 0 } }};static const CGEN_IFMT ifmt_copst = {  16, 32, 0xfff0, { { F (F_OP1) }, { F (F_CCC) }, { F (F_OP2) }, { F (F_OP3) }, { F (F_CRJ) }, { F (F_U4C) }, { F (F_RIC) }, { 0 } }};static const CGEN_IFMT ifmt_addsp = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_S10) }, { 0 } }};static const CGEN_IFMT ifmt_ldm0 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_REGLIST_LOW_LD) }, { 0 } }};static const CGEN_IFMT ifmt_ldm1 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_REGLIST_HI_LD) }, { 0 } }};static const CGEN_IFMT ifmt_stm0 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_REGLIST_LOW_ST) }, { 0 } }};static const CGEN_IFMT ifmt_stm1 = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_REGLIST_HI_ST) }, { 0 } }};static const CGEN_IFMT ifmt_enter = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_OP2) }, { F (F_U10) }, { 0 } }};#undef F#define A(a) (1 << CONCAT2 (CGEN_INSN_,a))#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */#define OPERAND(op) CONCAT2 (FR30_OPERAND_,op)#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))/* The instruction table.  */static const CGEN_OPCODE fr30_cgen_insn_opcode_table[MAX_INSNS] ={  /* Special null first entry.     A `num' value of zero is thus invalid.     Also, the special `invalid' insn resides here.  */  { { 0, 0, 0, 0 }, {{0}}, 0, {0}},/* add $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xa600 }  },/* add $u4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },    & ifmt_addi, { 0xa400 }  },/* add2 $m4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (M4), ',', OP (RI), 0 } },    & ifmt_add2, { 0xa500 }  },/* addc $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xa700 }  },/* addn $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xa200 }  },/* addn $u4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },    & ifmt_addi, { 0xa000 }  },/* addn2 $m4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (M4), ',', OP (RI), 0 } },    & ifmt_add2, { 0xa100 }  },/* sub $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xac00 }  },/* subc $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xad00 }  },/* subn $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xae00 }  },/* cmp $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xaa00 }  },/* cmp $u4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },    & ifmt_addi, { 0xa800 }  },/* cmp2 $m4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (M4), ',', OP (RI), 0 } },    & ifmt_add2, { 0xa900 }  },/* and $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0x8200 }  },/* or $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0x9200 }  },/* eor $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0x9a00 }  },/* and $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x8400 }  },/* andh $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x8500 }  },/* andb $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x8600 }  },/* or $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x9400 }  },/* orh $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x9500 }  },/* orb $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x9600 }  },/* eor $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x9c00 }  },/* eorh $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x9d00 }  },/* eorb $Rj,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },    & ifmt_add, { 0x9e00 }  },/* bandl $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x8000 }  },/* borl $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x9000 }  },/* beorl $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x9800 }  },/* bandh $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x8100 }  },/* borh $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x9100 }  },/* beorh $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x9900 }  },/* btstl $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x8800 }  },/* btsth $u4,@$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },    & ifmt_addi, { 0x8900 }  },/* mul $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xaf00 }  },/* mulu $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xab00 }  },/* mulh $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xbf00 }  },/* muluh $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xbb00 }  },/* div0s $Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RI), 0 } },    & ifmt_div0s, { 0x9740 }  },/* div0u $Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RI), 0 } },    & ifmt_div0s, { 0x9750 }  },/* div1 $Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RI), 0 } },    & ifmt_div0s, { 0x9760 }  },/* div2 $Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RI), 0 } },    & ifmt_div0s, { 0x9770 }  },/* div3 */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_div3, { 0x9f60 }  },/* div4s */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_div3, { 0x9f70 }  },/* lsl $Rj,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },    & ifmt_add, { 0xb600 }  },/* lsl $u4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },    & ifmt_addi, { 0xb400 }  },/* lsl2 $u4,$Ri */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },    & ifmt_addi, { 0xb500 }  },/* lsr $Rj,$Ri */  {

⌨️ 快捷键说明

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