From dcf5d11760ce0936c467ff48b8c1da159d1de7ad Mon Sep 17 00:00:00 2001 From: "J.T. Conklin" Date: Thu, 22 Aug 1996 05:30:14 +0000 Subject: [PATCH] parse [reg], lo(exp), and hi(exp) --- gas/config/tc-v850.c | 51 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/gas/config/tc-v850.c b/gas/config/tc-v850.c index 49dd76a2998..c7c420b8969 100644 --- a/gas/config/tc-v850.c +++ b/gas/config/tc-v850.c @@ -31,7 +31,7 @@ const char comment_chars[] = "#"; /* Characters which start a comment at the beginning of a line. */ -const char line_comment_chars[] = "#"; +const char line_comment_chars[] = ";#"; /* Characters which may be used to separate multiple commands on a single line. */ @@ -359,15 +359,44 @@ get_operands (exp) if (*p==0 || *p=='\n' || *p=='\r') break; - input_line_pointer = p; + /* skip trailing parens */ + if (*p == ')' || *p == ']') + { + p++; + continue; + } - if (!register_name(&exp[numops])) - expression(&exp[numops]); + if (*p == '[') + { + p++; + input_line_pointer = p; + register_name(&exp[numops]); + } + else if (strncmp(p, "lo(", 3) == 0) + { + p += 3; + input_line_pointer = p; + expression(&exp[numops]); + } + else if (strncmp(p, "hi(", 3) == 0) + { + p += 3; + input_line_pointer = p; + expression(&exp[numops]); + } + else + { + input_line_pointer = p; + if (!register_name(&exp[numops])) + expression(&exp[numops]); + } - numops++; p = input_line_pointer; + numops++; } + input_line_pointer = p; + exp[numops].X_op = 0; return (numops); } @@ -473,8 +502,16 @@ md_assemble (str) #endif /* Write out the instruction. */ - f = frag_more (2); - md_number_to_chars (f, insn, 2); + if ((insn & 0x0600) == 0x0600) + { + f = frag_more (4); + md_number_to_chars (f, insn, 4); + } + else + { + f = frag_more (2); + md_number_to_chars (f, insn, 2); + } } -- 2.30.2