Changeset 609 for branches/GNU/src/binutils/opcodes/ns32k-dis.c
- Timestamp:
- Aug 16, 2003, 6:59:22 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/binutils/opcodes/ns32k-dis.c
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.1.1.2
r608 r609 1 1 /* Print National Semiconductor 32000 instructions. 2 Copyright 1986, 1988, 1991, 1992, 1994, 1998 2 Copyright 1986, 1988, 1991, 1992, 1994, 1998, 2001, 2002 3 3 Free Software Foundation, Inc. 4 4 … … 40 40 static int get_displacement PARAMS ((char *, int *)); 41 41 static int invalid_float PARAMS ((char *, int)); 42 static long int read_memory_integer PARAMS ((unsigned char *, int)); 43 static int fetch_data PARAMS ((struct disassemble_info *, bfd_byte *)); 44 struct ns32k_option; 45 static void optlist PARAMS ((int, const struct ns32k_option *, char *)); 46 static void list_search PARAMS ((int, const struct ns32k_option *, char *)); 47 static int bit_extract PARAMS ((bfd_byte *, int, int)); 48 static int bit_extract_simple PARAMS ((bfd_byte *, int, int)); 49 static void bit_copy PARAMS ((char *, int, int, char *)); 50 static int sign_extend PARAMS ((int, int)); 51 static void flip_bytes PARAMS ((char *, int)); 42 52 43 53 static long read_memory_integer(addr, nr) … … 312 322 { 313 323 int result; 314 int mask;315 324 int bit; 316 325 … … 402 411 disassemble_info *info; 403 412 { 404 registerunsigned int i;405 registerchar *d;413 unsigned int i; 414 const char *d; 406 415 unsigned short first_word; 407 416 int ioffset; /* bits into instruction */ … … 553 562 int index_offset; 554 563 { 564 union { 565 float f; 566 double d; 567 int i[2]; 568 } value; 569 int Ivalue; 555 570 int addr_mode; 556 float Fvalue;557 double Lvalue;558 int Ivalue;559 571 int disp1, disp2; 560 572 int index; … … 632 644 case 'W': 633 645 Ivalue = bit_extract (buffer, *aoffsetp, 16); 634 flip_bytes ( &Ivalue, 2);646 flip_bytes ((char *) & Ivalue, 2); 635 647 *aoffsetp += 16; 636 648 Ivalue = sign_extend (Ivalue, 16); … … 639 651 case 'D': 640 652 Ivalue = bit_extract (buffer, *aoffsetp, 32); 641 flip_bytes ( &Ivalue, 4);653 flip_bytes ((char *) & Ivalue, 4); 642 654 *aoffsetp += 32; 643 655 sprintf (result, "$%d", Ivalue); 644 656 break; 645 657 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); 648 660 *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]); 651 663 else /* assume host has ieee float */ 652 sprintf (result, "$%g", Fvalue);664 sprintf (result, "$%g", value.f); 653 665 break; 654 666 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); 657 669 *aoffsetp += 64; 658 if (INVALID_FLOAT (& Lvalue, 8))659 sprintf (result, "<<invalid long0x%.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]); 661 673 else /* assume host has ieee float */ 662 sprintf (result, "$%g", Lvalue);674 sprintf (result, "$%g", value.d); 663 675 break; 664 676 } … … 837 849 case 0x80: 838 850 Ivalue2 = bit_extract (buffer, *aoffsetp, 16); 839 flip_bytes ( &Ivalue2, 2);851 flip_bytes ((char *) & Ivalue2, 2); 840 852 Ivalue = sign_extend (Ivalue2, 14); 841 853 *aoffsetp += 16; … … 843 855 case 0xc0: 844 856 Ivalue = bit_extract (buffer, *aoffsetp, 32); 845 flip_bytes ( &Ivalue, 4);857 flip_bytes ((char *) & Ivalue, 4); 846 858 Ivalue = sign_extend (Ivalue, 30); 847 859 *aoffsetp += 32; -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.