aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1997-02-27 04:05:18 +0000
committerFred Fish <fnf@specifix.com>1997-02-27 04:05:18 +0000
commit1e12595d6460f1f44f8f0f79171029a91b66c696 (patch)
treefc61839107cc683591823170a6335c026f77f40b /gas/config
parentcf502a8d9b49273aeaeb4f926b042b64e6b1fe34 (diff)
downloadgdb-1e12595d6460f1f44f8f0f79171029a91b66c696.zip
gdb-1e12595d6460f1f44f8f0f79171029a91b66c696.tar.gz
gdb-1e12595d6460f1f44f8f0f79171029a91b66c696.tar.bz2
* 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.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-tic80.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/gas/config/tc-tic80.c b/gas/config/tc-tic80.c
index 44c408a..6f18d44 100644
--- a/gas/config/tc-tic80.c
+++ b/gas/config/tc-tic80.c
@@ -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: