* config/tc-tic80.c (FLT_CHARS): Change from "dD" to "fF".
authorFred Fish <fnf@specifix.com>
Thu, 27 Feb 1997 04:05:18 +0000 (04:05 +0000)
committerFred Fish <fnf@specifix.com>
Thu, 27 Feb 1997 04:05:18 +0000 (04:05 +0000)
(find_opcode): Match operands that can be floats.
(build_insn): Handle O_big (float) expressions and build
correct opcode.

gas/ChangeLog
gas/config/tc-tic80.c

index 02f21d47f4355de9262af9a891402c2d209224dd..bb829504d1048cdbd7edc03740d498128be30cd3 100644 (file)
@@ -1,3 +1,12 @@
+start-sanitize-tic80
+Wed Feb 26 20:47:12 1997  Fred Fish  <fnf@cygnus.com>
+
+       * config/tc-tic80.c (FLT_CHARS): Change from "dD" to "fF".
+       (find_opcode): Match operands that can be floats.
+       (build_insn): Handle O_big (float) expressions and build
+       correct opcode.
+
+end-sanitize-tic80
 Wed Feb 26 18:19:00 1997  Stan Shebs  <shebs@andros.cygnus.com>
 
        * configure.in (mips*-*-lnews*): New target, also make empty
index 44c408aff9210d86049c376cbdebacc3ab8c2b7a..6f18d44571c683370875fb4c60b49d8f47f62b69 100644 (file)
@@ -45,8 +45,8 @@ const char line_separator_chars[] = "";
 const char EXP_CHARS[] = "eE";
 
 /* Characters which mean that a number is a floating point constant, 
-   as in 0d1.0.  */
-const char FLT_CHARS[] = "dD";
+   as in 0f1.0.  */
+const char FLT_CHARS[] = "fF";
 
 /* This table describes all the machine specific pseudo-ops the assembler
    has to support.  The fields are:
@@ -418,9 +418,14 @@ find_opcode (opcode, myops)
                  match = 0;
                }
              break;
+           case O_big:
+             if ((num > 0) || !(flags & TIC80_OPERAND_FLOAT))
+               {
+                 match = 0;
+               }
+             break;
            case O_illegal:
            case O_symbol_rva:
-           case O_big:
            case O_uminus:
            case O_bit_not:
            case O_logical_not:
@@ -664,9 +669,23 @@ build_insn (opcode, opers)
              internal_error_a ("unhandled operand modifier", opers[expi].X_add_number);
            }
          break;
+       case O_big:
+         extended++;
+         {
+           union {
+             unsigned long l;
+             LITTLENUM_TYPE words[10];
+           } u;
+           gen_to_words (u.words, 2, 8L);      /* FIXME: magic numbers */
+           /* FIXME: More magic, swap the littlenums */
+           u.words[2] = u.words[0];
+           u.words[0] = u.words [1];
+           u.words[1] = u.words [2];
+           insn[1] = u.l;
+         }
+         break;
        case O_illegal:
        case O_symbol_rva:
-       case O_big:
        case O_uminus:
        case O_bit_not:
        case O_logical_not: