private void I_LHI(string cmd)
{
skip_space();
int dest_r = R();
skip_space();
if (cur_token != ',')
error("指令不完整,期望逗号(,)");
get_src_token();
skip_space();
string word = null;
//首先假设指令第三个参数是立即数,如果尝试读取立即数失败,
//再尝试读取标记
try
{
word = get_number_word();
int imm = parse_number_16(word);
#if debug
Debug("got lhi imm:" + imm.ToString());
#endif
format_line.AppendFormat("R{0}, {1}", dest_r, word);
}
catch
{
//删除上面代码抛出的异常
delete_last_error();
word = get_word().ToUpper();
#if debug
Debug("got lhi imm label:" + word);
#endif
format_line.AppendFormat("R{0}, {1}", dest_r, word);
skip_space();
int index = 0;
if (cur_token == '[')
{
get_src_token();
skip_space();
string n_w = get_number_word();
index = parse_number_16(n_w);
#if debug
Debug("got array num: " + index.ToString());
#endif
skip_space();
if (cur_token != ']')
error("错误的语法,期望']'");
get_src_token();
format_line.AppendFormat("[{0}]", n_w);
}
if (check_symbol(word, index) == false)
add_to_wait(word, line, line_at);
}
}