OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [gas/] [config/] [vax-inst.h] - Diff between revs 156 and 816

Only display areas with differences | Details | Blame | View Log

Rev 156 Rev 816
/* vax-inst.h - GNU - Part of vax.c
/* vax-inst.h - GNU - Part of vax.c
   Copyright 1987, 1992, 1995, 2000, 2002, 2007 Free Software Foundation, Inc.
   Copyright 1987, 1992, 1995, 2000, 2002, 2007 Free Software Foundation, Inc.
 
 
   This file is part of GAS, the GNU Assembler.
   This file is part of GAS, the GNU Assembler.
 
 
   GAS is free software; you can redistribute it and/or modify
   GAS is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   the Free Software Foundation; either version 3, or (at your option)
   any later version.
   any later version.
 
 
   GAS is distributed in the hope that it will be useful,
   GAS is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with GAS; see the file COPYING.  If not, write to
   along with GAS; see the file COPYING.  If not, write to
   the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
   the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
 
/*
/*
 * This is part of vax-ins-parse.c & friends.
 * This is part of vax-ins-parse.c & friends.
 * We want to parse a vax instruction text into a tree defined here.
 * We want to parse a vax instruction text into a tree defined here.
 */
 */
 
 
#define VIT_MAX_OPERANDS (6)    /* maximum number of operands in one       */
#define VIT_MAX_OPERANDS (6)    /* maximum number of operands in one       */
/* single vax instruction */
/* single vax instruction */
 
 
struct vop                      /* vax instruction operand                 */
struct vop                      /* vax instruction operand                 */
{
{
  short int vop_ndx;            /* -1, or index register. eg 7=[R7]        */
  short int vop_ndx;            /* -1, or index register. eg 7=[R7]        */
  short int vop_reg;            /* -1, or register number. eg @I^#=0xF     */
  short int vop_reg;            /* -1, or register number. eg @I^#=0xF     */
  /* Helps distinguish "abs" from "abs(PC)".  */
  /* Helps distinguish "abs" from "abs(PC)".  */
  short int vop_mode;           /* addressing mode 4 bits. eg I^#=0x9      */
  short int vop_mode;           /* addressing mode 4 bits. eg I^#=0x9      */
  char vop_short;               /* operand displacement length as written  */
  char vop_short;               /* operand displacement length as written  */
  /* ' '=none, "bilsw"=B^I^L^S^W^.           */
  /* ' '=none, "bilsw"=B^I^L^S^W^.           */
  char vop_access;              /* 'b'branch ' 'no-instruction 'amrvw'norm */
  char vop_access;              /* 'b'branch ' 'no-instruction 'amrvw'norm */
  char vop_width;               /* Operand width, one of "bdfghloqw"       */
  char vop_width;               /* Operand width, one of "bdfghloqw"       */
  const char *vop_warn;         /* warning message of this operand, if any */
  const char *vop_warn;         /* warning message of this operand, if any */
  const char *vop_error;        /* say if operand is inappropriate         */
  const char *vop_error;        /* say if operand is inappropriate         */
  char *vop_expr_begin;         /* Unparsed expression, 1st char ...       */
  char *vop_expr_begin;         /* Unparsed expression, 1st char ...       */
  char *vop_expr_end;           /* ... last char.                          */
  char *vop_expr_end;           /* ... last char.                          */
  unsigned char vop_nbytes;     /* number of bytes in datum                */
  unsigned char vop_nbytes;     /* number of bytes in datum                */
};
};
 
 
typedef long vax_opcodeT;       /* For initialising array of opcodes       */
typedef long vax_opcodeT;       /* For initialising array of opcodes       */
/* Some synthetic opcodes > 16 bits!       */
/* Some synthetic opcodes > 16 bits!       */
 
 
#define VIT_OPCODE_SYNTHETIC 0x80000000 /* Not real hardware instruction.  */
#define VIT_OPCODE_SYNTHETIC 0x80000000 /* Not real hardware instruction.  */
#define VIT_OPCODE_SPECIAL   0x40000000 /* Not normal branch optimising.   */
#define VIT_OPCODE_SPECIAL   0x40000000 /* Not normal branch optimising.   */
/* Never set without ..._SYNTHETIC */
/* Never set without ..._SYNTHETIC */
 
 
#define VAX_WIDTH_UNCONDITIONAL_JUMP '-'        /* These are encoded into         */
#define VAX_WIDTH_UNCONDITIONAL_JUMP '-'        /* These are encoded into         */
#define VAX_WIDTH_CONDITIONAL_JUMP   '?'        /* vop_width when vop_access=='b' */
#define VAX_WIDTH_CONDITIONAL_JUMP   '?'        /* vop_width when vop_access=='b' */
#define VAX_WIDTH_WORD_JUMP          '!'        /* and VIT_OPCODE_SYNTHETIC set.  */
#define VAX_WIDTH_WORD_JUMP          '!'        /* and VIT_OPCODE_SYNTHETIC set.  */
#define VAX_WIDTH_BYTE_JUMP          ':'        /*                                */
#define VAX_WIDTH_BYTE_JUMP          ':'        /*                                */
 
 
#define VAX_JSB (0x16)          /* Jump to subroutine                      */
#define VAX_JSB (0x16)          /* Jump to subroutine                      */
#define VAX_JMP (0x17)          /* Useful for branch optimising. Jump instr*/
#define VAX_JMP (0x17)          /* Useful for branch optimising. Jump instr*/
#define VAX_PC_RELATIVE_MODE (0xef)     /* Use it after VAX_JMP            */
#define VAX_PC_RELATIVE_MODE (0xef)     /* Use it after VAX_JMP            */
#define VAX_ABSOLUTE_MODE (0x9F)/* Use as @#...                    */
#define VAX_ABSOLUTE_MODE (0x9F)/* Use as @#...                    */
#define VAX_BRB (0x11)          /* Canonical branch.                       */
#define VAX_BRB (0x11)          /* Canonical branch.                       */
#define VAX_BRW (0x31)          /* Another canonical branch                */
#define VAX_BRW (0x31)          /* Another canonical branch                */
#define VAX_CALLS (0xFB)        /* Call with arg list on stack             */
#define VAX_CALLS (0xFB)        /* Call with arg list on stack             */
#define VAX_CALLG (0xFA)        /* Call with arg list in memory            */
#define VAX_CALLG (0xFA)        /* Call with arg list in memory            */
#define VAX_WIDEN_WORD (0x20)   /* Add this to byte branch to get word br.  */
#define VAX_WIDEN_WORD (0x20)   /* Add this to byte branch to get word br.  */
#define VAX_WIDEN_LONG (0x6)    /* Add this to byte branch to get long jmp.*/
#define VAX_WIDEN_LONG (0x6)    /* Add this to byte branch to get long jmp.*/
/* Needs VAX_PC_RELATIVE_MODE byte after it*/
/* Needs VAX_PC_RELATIVE_MODE byte after it*/
 
 
struct vit                      /* vax instruction tree                    */
struct vit                      /* vax instruction tree                    */
{
{
  /* vit_opcode is char[] for portability.   */
  /* vit_opcode is char[] for portability.   */
  char vit_opcode[sizeof (vax_opcodeT)];
  char vit_opcode[sizeof (vax_opcodeT)];
  unsigned char vit_opcode_nbytes;      /* How long is _opcode? (chars)    */
  unsigned char vit_opcode_nbytes;      /* How long is _opcode? (chars)    */
  unsigned char vit_operands;   /*                                         */
  unsigned char vit_operands;   /*                                         */
  struct vop vit_operand[VIT_MAX_OPERANDS];     /* operands             */
  struct vop vit_operand[VIT_MAX_OPERANDS];     /* operands             */
  const char *vit_error;        /* "" or error text */
  const char *vit_error;        /* "" or error text */
};
};
 
 
/* end of vax-inst.h */
/* end of vax-inst.h */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.