tic80-opc.c

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

C
1,217
字号
/* Opcode table for TI TMS320C80 (MVP).   Copyright 1996, 1997, 2000 Free Software Foundation, Inc.This file is part of GDB, GAS, and the GNU binutils.GDB, GAS, and the GNU binutils are free software; you can redistributethem and/or modify them under the terms of the GNU General PublicLicense as published by the Free Software Foundation; either version1, or (at your option) any later version.GDB, GAS, and the GNU binutils are distributed in the hope that theywill be useful, but WITHOUT ANY WARRANTY; without even the impliedwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  Seethe GNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this file; see the file COPYING.  If not, write to the FreeSoftware Foundation, 59 Temple Place - Suite 330, Boston, MA02111-1307, USA.  */#include <stdio.h>#include "sysdep.h"#include "opcode/tic80.h"/* This file holds various tables for the TMS320C80 (MVP).   The opcode table is strictly constant data, so the compiler should   be able to put it in the .text section.   This file also holds the operand table.  All knowledge about   inserting operands into instructions and vice-versa is kept in this   file.   The predefined register table maps from register names to register   values.  *//* Table of predefined symbol names, such as general purpose registers,   floating point registers, condition codes, control registers, and bit   numbers.   The table is sorted case independently by name so that it is suitable for   searching via a binary search using a case independent comparison   function.   Note that the type of the symbol is stored in the upper bits of the value   field, which allows the value and type to be passed around as a unit in a   single int.  The types have to be masked off before using the numeric   value as a number.*/const struct predefined_symbol tic80_predefined_symbols[] ={  { "a0",	TIC80_OPERAND_FPA | 0 },  { "a1",	TIC80_OPERAND_FPA | 1 },  { "alw.b",	TIC80_OPERAND_CC | 7 },  { "alw.h",	TIC80_OPERAND_CC | 15 },  { "alw.w",	TIC80_OPERAND_CC | 23 },  { "ANASTAT",	TIC80_OPERAND_CR | 0x34 },  { "BRK1",	TIC80_OPERAND_CR | 0x39 },  { "BRK2",	TIC80_OPERAND_CR | 0x3A },  { "CONFIG",	TIC80_OPERAND_CR | 2 },  { "DLRU",	TIC80_OPERAND_CR | 0x500 },  { "DTAG0",	TIC80_OPERAND_CR | 0x400 },  { "DTAG1",	TIC80_OPERAND_CR | 0x401 },  { "DTAG10",	TIC80_OPERAND_CR | 0x40A },  { "DTAG11",	TIC80_OPERAND_CR | 0x40B },  { "DTAG12",	TIC80_OPERAND_CR | 0x40C },  { "DTAG13",	TIC80_OPERAND_CR | 0x40D },  { "DTAG14",	TIC80_OPERAND_CR | 0x40E },  { "DTAG15",	TIC80_OPERAND_CR | 0x40F },  { "DTAG2",	TIC80_OPERAND_CR | 0x402 },  { "DTAG3",	TIC80_OPERAND_CR | 0x403 },  { "DTAG4",	TIC80_OPERAND_CR | 0x404 },  { "DTAG5",	TIC80_OPERAND_CR | 0x405 },  { "DTAG6",	TIC80_OPERAND_CR | 0x406 },  { "DTAG7",	TIC80_OPERAND_CR | 0x407 },  { "DTAG8",	TIC80_OPERAND_CR | 0x408 },  { "DTAG9",	TIC80_OPERAND_CR | 0x409 },  { "ECOMCNTL",	TIC80_OPERAND_CR | 0x33 },  { "EIP",	TIC80_OPERAND_CR | 1 },  { "EPC",	TIC80_OPERAND_CR | 0 },  { "eq.b",	TIC80_OPERAND_BITNUM  | 0 },  { "eq.f",	TIC80_OPERAND_BITNUM  | 20 },  { "eq.h",	TIC80_OPERAND_BITNUM  | 10 },  { "eq.w",	TIC80_OPERAND_BITNUM  | 20 },  { "eq0.b",	TIC80_OPERAND_CC | 2 },  { "eq0.h",	TIC80_OPERAND_CC | 10 },  { "eq0.w",	TIC80_OPERAND_CC | 18 },  { "FLTADR",	TIC80_OPERAND_CR | 0x11 },  { "FLTDTH",	TIC80_OPERAND_CR | 0x14 },  { "FLTDTL",	TIC80_OPERAND_CR | 0x13 },  { "FLTOP",	TIC80_OPERAND_CR | 0x10 },  { "FLTTAG",	TIC80_OPERAND_CR | 0x12 },  { "FPST",	TIC80_OPERAND_CR | 8 },  { "ge.b",	TIC80_OPERAND_BITNUM  | 5 },  { "ge.f",	TIC80_OPERAND_BITNUM  | 25 },  { "ge.h",	TIC80_OPERAND_BITNUM  | 15 },  { "ge.w",	TIC80_OPERAND_BITNUM  | 25 },  { "ge0.b",	TIC80_OPERAND_CC | 3 },  { "ge0.h",	TIC80_OPERAND_CC | 11 },  { "ge0.w",	TIC80_OPERAND_CC | 19 },  { "gt.b",	TIC80_OPERAND_BITNUM  | 2 },  { "gt.f",	TIC80_OPERAND_BITNUM  | 22 },  { "gt.h",	TIC80_OPERAND_BITNUM  | 12 },  { "gt.w",	TIC80_OPERAND_BITNUM  | 22 },  { "gt0.b",	TIC80_OPERAND_CC | 1 },  { "gt0.h",	TIC80_OPERAND_CC | 9 },  { "gt0.w",	TIC80_OPERAND_CC | 17 },  { "hi.b",	TIC80_OPERAND_BITNUM  | 6 },  { "hi.h",	TIC80_OPERAND_BITNUM  | 16 },  { "hi.w",	TIC80_OPERAND_BITNUM  | 26 },  { "hs.b",	TIC80_OPERAND_BITNUM  | 9 },  { "hs.h",	TIC80_OPERAND_BITNUM  | 19 },  { "hs.w",	TIC80_OPERAND_BITNUM  | 29 },  { "ib.f",	TIC80_OPERAND_BITNUM  | 28 },  { "IE",	TIC80_OPERAND_CR | 6 },  { "ILRU",	TIC80_OPERAND_CR | 0x300 },  { "in.f",	TIC80_OPERAND_BITNUM  | 27 },  { "IN0P",	TIC80_OPERAND_CR | 0x4000 },  { "IN1P",	TIC80_OPERAND_CR | 0x4001 },  { "INTPEN",	TIC80_OPERAND_CR | 4 },  { "ITAG0",	TIC80_OPERAND_CR | 0x200 },  { "ITAG1",	TIC80_OPERAND_CR | 0x201 },  { "ITAG10",	TIC80_OPERAND_CR | 0x20A },  { "ITAG11",	TIC80_OPERAND_CR | 0x20B },  { "ITAG12",	TIC80_OPERAND_CR | 0x20C },  { "ITAG13",	TIC80_OPERAND_CR | 0x20D },  { "ITAG14",	TIC80_OPERAND_CR | 0x20E },  { "ITAG15",	TIC80_OPERAND_CR | 0x20F },  { "ITAG2",	TIC80_OPERAND_CR | 0x202 },  { "ITAG3",	TIC80_OPERAND_CR | 0x203 },  { "ITAG4",	TIC80_OPERAND_CR | 0x204 },  { "ITAG5",	TIC80_OPERAND_CR | 0x205 },  { "ITAG6",	TIC80_OPERAND_CR | 0x206 },  { "ITAG7",	TIC80_OPERAND_CR | 0x207 },  { "ITAG8",	TIC80_OPERAND_CR | 0x208 },  { "ITAG9",	TIC80_OPERAND_CR | 0x209 },  { "le.b",	TIC80_OPERAND_BITNUM  | 3 },  { "le.f",	TIC80_OPERAND_BITNUM  | 23 },  { "le.h",	TIC80_OPERAND_BITNUM  | 13 },  { "le.w",	TIC80_OPERAND_BITNUM  | 23 },  { "le0.b",	TIC80_OPERAND_CC | 6 },  { "le0.h",	TIC80_OPERAND_CC | 14 },  { "le0.w",	TIC80_OPERAND_CC | 22 },  { "lo.b",	TIC80_OPERAND_BITNUM  | 8 },  { "lo.h",	TIC80_OPERAND_BITNUM  | 18 },  { "lo.w",	TIC80_OPERAND_BITNUM  | 28 },  { "ls.b",	TIC80_OPERAND_BITNUM  | 7 },  { "ls.h",	TIC80_OPERAND_BITNUM  | 17 },  { "ls.w",	TIC80_OPERAND_BITNUM  | 27 },  { "lt.b",	TIC80_OPERAND_BITNUM  | 4 },  { "lt.f",	TIC80_OPERAND_BITNUM  | 24 },  { "lt.h",	TIC80_OPERAND_BITNUM  | 14 },  { "lt.w",	TIC80_OPERAND_BITNUM  | 24 },  { "lt0.b",	TIC80_OPERAND_CC | 4 },  { "lt0.h",	TIC80_OPERAND_CC | 12 },  { "lt0.w",	TIC80_OPERAND_CC | 20 },  { "MIP",	TIC80_OPERAND_CR | 0x31 },  { "MPC",	TIC80_OPERAND_CR | 0x30 },  { "ne.b",	TIC80_OPERAND_BITNUM  | 1 },  { "ne.f",	TIC80_OPERAND_BITNUM  | 21 },  { "ne.h",	TIC80_OPERAND_BITNUM  | 11 },  { "ne.w",	TIC80_OPERAND_BITNUM  | 21 },  { "ne0.b",	TIC80_OPERAND_CC | 5 },  { "ne0.h",	TIC80_OPERAND_CC | 13 },  { "ne0.w",	TIC80_OPERAND_CC | 21 },  { "nev.b",	TIC80_OPERAND_CC | 0 },  { "nev.h",	TIC80_OPERAND_CC | 8 },  { "nev.w",	TIC80_OPERAND_CC | 16 },  { "ob.f",	TIC80_OPERAND_BITNUM  | 29 },  { "or.f",	TIC80_OPERAND_BITNUM  | 31 },  { "ou.f",	TIC80_OPERAND_BITNUM  | 26 },  { "OUTP",	TIC80_OPERAND_CR | 0x4002 },  { "PKTREQ",	TIC80_OPERAND_CR | 0xD },  { "PPERROR",	TIC80_OPERAND_CR | 0xA },  { "r0",	TIC80_OPERAND_GPR | 0 },  { "r1",	TIC80_OPERAND_GPR | 1 },  { "r10",	TIC80_OPERAND_GPR | 10 },  { "r11",	TIC80_OPERAND_GPR | 11 },  { "r12",	TIC80_OPERAND_GPR | 12 },  { "r13",	TIC80_OPERAND_GPR | 13 },  { "r14",	TIC80_OPERAND_GPR | 14 },  { "r15",	TIC80_OPERAND_GPR | 15 },  { "r16",	TIC80_OPERAND_GPR | 16 },  { "r17",	TIC80_OPERAND_GPR | 17 },  { "r18",	TIC80_OPERAND_GPR | 18 },  { "r19",	TIC80_OPERAND_GPR | 19 },  { "r2",	TIC80_OPERAND_GPR | 2 },  { "r20",	TIC80_OPERAND_GPR | 20 },  { "r21",	TIC80_OPERAND_GPR | 21 },  { "r22",	TIC80_OPERAND_GPR | 22 },  { "r23",	TIC80_OPERAND_GPR | 23 },  { "r24",	TIC80_OPERAND_GPR | 24 },  { "r25",	TIC80_OPERAND_GPR | 25 },  { "r26",	TIC80_OPERAND_GPR | 26 },  { "r27",	TIC80_OPERAND_GPR | 27 },  { "r28",	TIC80_OPERAND_GPR | 28 },  { "r29",	TIC80_OPERAND_GPR | 29 },  { "r3",	TIC80_OPERAND_GPR | 3 },  { "r30",	TIC80_OPERAND_GPR | 30 },  { "r31",	TIC80_OPERAND_GPR | 31 },  { "r4",	TIC80_OPERAND_GPR | 4 },  { "r5",	TIC80_OPERAND_GPR | 5 },  { "r6",	TIC80_OPERAND_GPR | 6 },  { "r7",	TIC80_OPERAND_GPR | 7 },  { "r8",	TIC80_OPERAND_GPR | 8 },  { "r9",	TIC80_OPERAND_GPR | 9 },  { "SYSSTK",	TIC80_OPERAND_CR | 0x20 },  { "SYSTMP",	TIC80_OPERAND_CR | 0x21 },  { "TCOUNT",	TIC80_OPERAND_CR | 0xE },  { "TSCALE",	TIC80_OPERAND_CR | 0xF },  { "uo.f",	TIC80_OPERAND_BITNUM  | 30 },};const int tic80_num_predefined_symbols = sizeof (tic80_predefined_symbols) / sizeof (struct predefined_symbol);/* This function takes a predefined symbol name in NAME, symbol class   in CLASS, and translates it to a numeric value, which it returns.   If CLASS is zero, any symbol that matches NAME is translated.  If   CLASS is non-zero, then only a symbol that has class CLASS is   matched.   If no translation is possible, it returns -1, a value not used by   any predefined symbol. Note that the predefined symbol array is   presorted case independently by name.   This function is implemented with the assumption that there are no   duplicate names in the predefined symbol array, which happens to be   true at the moment. */inttic80_symbol_to_value (name, class)     char *name;     int class;{  const struct predefined_symbol *pdsp;  int low = 0;  int middle;  int high = tic80_num_predefined_symbols - 1;  int cmp;

⌨️ 快捷键说明

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