Abraham.DLXChecker.I C# (CSharp) Method

I() private method

instruction include comment
private I ( ) : void
return void
        private void I()
        {
            string word = get_word();
            WORDTYPE w_type;

            //printf("got word %s\n\n",word);
            w_type = get_word_type(word);
            if (w_type == WORDTYPE.LABEL)
            {

                //do something...
            #if debug
                Debug("got label :" + word + '\n');
            #endif
                //push_convert(word);

                skip_space();

                if (cur_token != ':')
                    error("指令不完整,期望分号':'");
                // push_convert(":");
                string upper_word = word.ToUpper();
                if (extern_symbol_tmp.ContainsKey(upper_word))
                    error(string.Format("标记{0}已被声明为Extern,不能被定义", word));
                if (dataTable.Contains(upper_word) == true)
                    error(string.Format("符号{0}已经在data段声明过,不能重复!", word));
                if (textTable.Contains(upper_word))
                    error(string.Format("标记{0}出现重定义", word));
                else
                    textTable.Add(upper_word);
                if (global_symbol_tmp.ContainsKey(upper_word))
                {
                    global_symbol_tmp.Remove(upper_word);
                }

                //把标记从等待确认标记是否存在的列表出去除
                remove_from_wait(upper_word);

                format_line.Append(AppendSpace(upper_word + " :"));

                get_src_token();
                skip_space();
                word = get_word();
                w_type = get_word_type(word);
                if (w_type == WORDTYPE.LABEL)
                    error("不能识别的指令操作符\'" + word + '\'');

            }
            else
            {
                format_line.Append(AppendSpace());
            }

            //得到操作码在表KEYWORDS中的具体索引,
            //该索引会记录到DLXObject中,linker阶段通过索引
            //进行表驱动
            format_line.Append(AppendSpace(word.ToUpper(), SPACENUM2));
            switch (w_type)
            {
                case WORDTYPE.ALR://I-类型算术/逻辑运算
                    I_ALR(word);
                    break;
                case WORDTYPE.ALI://R-类型算术/逻辑运算
                    I_ALI(word);
                    break;
                case WORDTYPE.LHI://LHI指令
                    I_LHI(word);
                    break;
                case WORDTYPE.LOAD ://数据传送加载指令
                    I_LOAD(word);
                    break;
                case WORDTYPE.STORE ://数据传送储存指令
                    I_STORE(word);
                    break;
                case WORDTYPE.CB://条件分支
                    I_CB(word);
                    break;
                case WORDTYPE.JMPI://使用立即数的跳,包括J和JAL
                    I_JMPI(word);
                    break;
                case WORDTYPE.TRAP://TRAP指令
                    I_TRAP(word);
                    break;
                case WORDTYPE.JMPR://使用寄存器的跳,包括JR和JALR
                    I_JMPR(word);
                    break;
                case WORDTYPE.RFE:
                    I_RFE(word);
                    break;
                case WORDTYPE.RET://从跳转(函数)返回 ,等价于JR R31
                    I_RET(word);
                    break;
                default:
                    error("不能识别的指令码" + word);
                    break;
            }
            //push_convert("\n");
        }