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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [opcodes/] [w65-dis.c] - Diff between revs 834 and 842

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 834 Rev 842
/* Disassemble WDC 65816 instructions.
/* Disassemble WDC 65816 instructions.
   Copyright 1995, 1998, 2000, 2001, 2002, 2005, 2007
   Copyright 1995, 1998, 2000, 2001, 2002, 2005, 2007
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
 
 
   This file is part of the GNU opcodes library.
   This file is part of the GNU opcodes library.
 
 
   This library is free software; you can redistribute it and/or modify
   This library 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.
 
 
   It is distributed in the hope that it will be useful, but WITHOUT
   It is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.
   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 this program; if not, write to the Free Software
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */
   MA 02110-1301, USA.  */
 
 
#include <stdio.h>
#include <stdio.h>
#include "sysdep.h"
#include "sysdep.h"
#define STATIC_TABLE
#define STATIC_TABLE
#define DEFINE_TABLE
#define DEFINE_TABLE
 
 
#include "w65-opc.h"
#include "w65-opc.h"
#include "dis-asm.h"
#include "dis-asm.h"
 
 
static fprintf_ftype fpr;
static fprintf_ftype fpr;
static void *stream;
static void *stream;
static struct disassemble_info *local_info;
static struct disassemble_info *local_info;
 
 
static void
static void
print_operand (int lookup, char *format, int *args)
print_operand (int lookup, char *format, int *args)
{
{
  int val;
  int val;
  int c;
  int c;
 
 
  while (*format)
  while (*format)
    {
    {
      switch (c = *format++)
      switch (c = *format++)
        {
        {
        case '$':
        case '$':
          val = args[(*format++) - '0'];
          val = args[(*format++) - '0'];
          if (lookup)
          if (lookup)
            local_info->print_address_func (val, local_info);
            local_info->print_address_func (val, local_info);
          else
          else
            fpr (stream, "0x%x", val);
            fpr (stream, "0x%x", val);
 
 
          break;
          break;
        default:
        default:
          fpr (stream, "%c", c);
          fpr (stream, "%c", c);
          break;
          break;
        }
        }
    }
    }
}
}
 
 
int
int
print_insn_w65 (bfd_vma memaddr, struct disassemble_info *info)
print_insn_w65 (bfd_vma memaddr, struct disassemble_info *info)
{
{
  int status = 0;
  int status = 0;
  unsigned char insn[4];
  unsigned char insn[4];
  const struct opinfo *op;
  const struct opinfo *op;
  int i;
  int i;
  int X = 0;
  int X = 0;
  int M = 0;
  int M = 0;
  int args[2];
  int args[2];
 
 
  stream = info->stream;
  stream = info->stream;
  fpr = info->fprintf_func;
  fpr = info->fprintf_func;
  local_info = info;
  local_info = info;
 
 
  for (i = 0; i < 4 && status == 0; i++)
  for (i = 0; i < 4 && status == 0; i++)
    status = info->read_memory_func (memaddr + i, insn + i, 1, info);
    status = info->read_memory_func (memaddr + i, insn + i, 1, info);
 
 
  for (op = optable; op->val != insn[0]; op++)
  for (op = optable; op->val != insn[0]; op++)
    ;
    ;
 
 
  fpr (stream, "%s", op->name);
  fpr (stream, "%s", op->name);
 
 
  /* Prepare all the posible operand values.  */
  /* Prepare all the posible operand values.  */
  {
  {
    int size = 1;
    int size = 1;
    int asR_W65_ABS8 = insn[1];
    int asR_W65_ABS8 = insn[1];
    int asR_W65_ABS16 = (insn[2] << 8) + asR_W65_ABS8;
    int asR_W65_ABS16 = (insn[2] << 8) + asR_W65_ABS8;
    int asR_W65_ABS24 = (insn[3] << 16) + asR_W65_ABS16;
    int asR_W65_ABS24 = (insn[3] << 16) + asR_W65_ABS16;
    int asR_W65_PCR8 = ((char) (asR_W65_ABS8)) + memaddr + 2;
    int asR_W65_PCR8 = ((char) (asR_W65_ABS8)) + memaddr + 2;
    int asR_W65_PCR16 = ((short) (asR_W65_ABS16)) + memaddr + 3;
    int asR_W65_PCR16 = ((short) (asR_W65_ABS16)) + memaddr + 3;
 
 
    switch (op->amode)
    switch (op->amode)
      {
      {
        DISASM ();
        DISASM ();
      }
      }
 
 
    return size;
    return size;
  }
  }
}
}
 
 

powered by: WebSVN 2.1.0

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