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