Ignore:
Timestamp:
Aug 16, 2003, 6:59:22 PM (22 years ago)
Author:
bird
Message:

binutils v2.14 - offical sources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/binutils/opcodes/ns32k-dis.c

    • Property cvs2svn:cvs-rev changed from 1.1 to 1.1.1.2
    r608 r609  
    11/* Print National Semiconductor 32000 instructions.
    2    Copyright 1986, 1988, 1991, 1992, 1994, 1998
     2   Copyright 1986, 1988, 1991, 1992, 1994, 1998, 2001, 2002
    33   Free Software Foundation, Inc.
    44
     
    4040static int get_displacement PARAMS ((char *, int *));
    4141static int invalid_float PARAMS ((char *, int));
     42static long int read_memory_integer PARAMS ((unsigned char *, int));
     43static int fetch_data PARAMS ((struct disassemble_info *, bfd_byte *));
     44struct ns32k_option;
     45static void optlist PARAMS ((int, const struct ns32k_option *, char *));
     46static void list_search PARAMS ((int, const struct ns32k_option *, char *));
     47static int bit_extract PARAMS ((bfd_byte *, int, int));
     48static int bit_extract_simple PARAMS ((bfd_byte *, int, int));
     49static void bit_copy PARAMS ((char *, int, int, char *));
     50static int sign_extend PARAMS ((int, int));
     51static void flip_bytes PARAMS ((char *, int));
    4252
    4353static long read_memory_integer(addr, nr)
     
    312322{
    313323  int result;
    314   int mask;
    315324  int bit;
    316325
     
    402411     disassemble_info *info;
    403412{
    404   register unsigned int i;
    405   register char *d;
     413  unsigned int i;
     414  const char *d;
    406415  unsigned short first_word;
    407416  int ioffset;          /* bits into instruction */
     
    553562     int index_offset;
    554563{
     564  union {
     565    float f;
     566    double d;
     567    int i[2];
     568  } value;
     569  int Ivalue;
    555570  int addr_mode;
    556   float Fvalue;
    557   double Lvalue;
    558   int Ivalue;
    559571  int disp1, disp2;
    560572  int index;
     
    632644            case 'W':
    633645              Ivalue = bit_extract (buffer, *aoffsetp, 16);
    634               flip_bytes (&Ivalue, 2);
     646              flip_bytes ((char *) & Ivalue, 2);
    635647              *aoffsetp += 16;
    636648              Ivalue = sign_extend (Ivalue, 16);
     
    639651            case 'D':
    640652              Ivalue = bit_extract (buffer, *aoffsetp, 32);
    641               flip_bytes (&Ivalue, 4);
     653              flip_bytes ((char *) & Ivalue, 4);
    642654              *aoffsetp += 32;
    643655              sprintf (result, "$%d", Ivalue);
    644656              break;
    645657            case 'F':
    646               bit_copy (buffer, *aoffsetp, 32, (char *) &Fvalue);
    647               flip_bytes (&Fvalue, 4);
     658              bit_copy (buffer, *aoffsetp, 32, (char *) &value.f);
     659              flip_bytes ((char *) &value.f, 4);
    648660              *aoffsetp += 32;
    649               if (INVALID_FLOAT (&Fvalue, 4))
    650                 sprintf (result, "<<invalid float 0x%.8x>>", *(int *) &Fvalue);
     661              if (INVALID_FLOAT (&value.f, 4))
     662                sprintf (result, "<<invalid float 0x%.8x>>", value.i[0]);
    651663              else /* assume host has ieee float */
    652                 sprintf (result, "$%g", Fvalue);
     664                sprintf (result, "$%g", value.f);
    653665              break;
    654666            case 'L':
    655               bit_copy (buffer, *aoffsetp, 64, (char *) &Lvalue);
    656               flip_bytes (&Lvalue, 8);
     667              bit_copy (buffer, *aoffsetp, 64, (char *) &value.d);
     668              flip_bytes ((char *) &value.d, 8);
    657669              *aoffsetp += 64;
    658               if (INVALID_FLOAT (&Lvalue, 8))
    659                 sprintf (result, "<<invalid long 0x%.8x%.8x>>",
    660                          *(((int *) &Lvalue) + 1), *(int *) &Lvalue);
     670              if (INVALID_FLOAT (&value.d, 8))
     671                sprintf (result, "<<invalid double 0x%.8x%.8x>>",
     672                         value.i[1], value.i[0]);
    661673              else /* assume host has ieee float */
    662                 sprintf (result, "$%g", Lvalue);
     674                sprintf (result, "$%g", value.d);
    663675              break;
    664676            }
     
    837849    case 0x80:
    838850      Ivalue2 = bit_extract (buffer, *aoffsetp, 16);
    839       flip_bytes (&Ivalue2, 2);
     851      flip_bytes ((char *) & Ivalue2, 2);
    840852      Ivalue = sign_extend (Ivalue2, 14);
    841853      *aoffsetp += 16;
     
    843855    case 0xc0:
    844856      Ivalue = bit_extract (buffer, *aoffsetp, 32);
    845       flip_bytes (&Ivalue, 4);
     857      flip_bytes ((char *) & Ivalue, 4);
    846858      Ivalue = sign_extend (Ivalue, 30);
    847859      *aoffsetp += 32;
Note: See TracChangeset for help on using the changeset viewer.