Abraham.DLXChecker.I_LHI C# (CSharp) Метод

I_LHI() приватный Метод

LHI指令,格式为lhi r0,#100或lhi r0, label_1 或lhi r1,str[#2]
private I_LHI ( string cmd ) : void
cmd string
Результат void
        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);

            }
        }