Abraham.DLXChecker.I_STORE C# (CSharp) 메소드

I_STORE() 개인적인 메소드

数据传送储存指令,包括sb, sw ,格式为sw #100(r2),r1或sw num(r2),r1或sw num[ #2](r0),r3
private I_STORE ( string cmd ) : void
cmd string
리턴 void
        private void I_STORE(string cmd)
        {
            skip_space();

            string word = null;
            //int mode = 0;
            int index = 0;
            int imm = 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("{0}", word);
            }
            catch(DLXException )
            {
                //mode = 1;
                //删除上面的错误
                delete_last_error();
                word = get_word().ToUpper();
                format_line.AppendFormat("{0}", 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 sw imm label: {0} with offset {1}", word, index));
            #endif
            }

            skip_space();
            if (cur_token != '(')
                error("指令语法错误,期望前括号'('");
            get_src_token(); skip_space();
            int src_r = R();
            skip_space();
            if (cur_token != ')')
                error("指令语法错误,期望后括号')'");
            get_src_token();
            skip_space();
            if (cur_token != ',')
                error("指令不完整,期望逗号(,)");
            get_src_token();
            skip_space();
            int dest_r = R();

            format_line.AppendFormat("(R{0}), R{1}",src_r, dest_r );
        }