Abraham.DLXChecker.I_LOAD C# (CSharp) Méthode

I_LOAD() private méthode

数据传送加载指令,包括lb和 lw ,格式为lw r1, #100(r2)或lw r1,num(r2)或lw r3,num[ #2](r0)
private I_LOAD ( string cmd ) : void
cmd string
Résultat void
        private void I_LOAD(string cmd)
        {
            skip_space();
            int dest_r = R();
            skip_space();
            if (cur_token != ',')
                error("指令不完整,期望逗号(,)");
            get_src_token();
            skip_space();

            string word = null;
               // int mode = 0;//0表示使用立即数,1表示使用标记
            int imm = 0;
            int index = 0;
            //首先假设指令第三个参数是立即数,如果尝试读取立即数失败,
            //再尝试读取标记
            try
            {
                //   mode = 0;
                word = get_number_word();
                imm = parse_number_16(word);
            #if debug
                Debug("got dw imm:" + imm.ToString());
            #endif
                format_line.AppendFormat("R{0}, {1}", dest_r, word);
            }
            catch (DLXException)
            {
                // mode = 1;
                //删除上面的错误
                delete_last_error();
                word = get_word().ToUpper();

                format_line.AppendFormat("R{0}, {1}", dest_r, word);
                skip_space();
                if (cur_token == '[')
                {
                    get_src_token();
                    skip_space();
                    string n_w = get_number_word();
                    index = parse_number_16(n_w);
                    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);

            #if debug
                Debug(string.Format("got dw imm label: {0} with offset {1}", word, index));
            #endif

            }
            catch
            #if debug
                (Exception e)
            #endif
            {
            #if debug
                Debug(e.StackTrace.ToString());
            #endif
             }

            skip_space();
            if (cur_token != '(')
                error("指令语法错误,期望前括号'('");
            get_src_token(); skip_space();
            int src_r = R();
            skip_space();
            if (cur_token != ')')
                error("指令语法错误,期望后括号')'");
            format_line.AppendFormat("(R{0})", src_r);
            get_src_token();
        }