/// <summary> /// 生成数据段 /// </summary> /// <param name="varNameList">变量名列表</param> /// <param name="varTable">变量表</param> /// <param name="cmdList">汇编指令列表</param> private void genDataIns(List <string> varNameList, VarTable varTable, List <AssemblerIns> cmdList) { foreach (string varName in varNameList) { if (varTable.GetType(varName) == VariableType.INT || varTable.GetType(varName) == VariableType.CHAR || varTable.GetType(varName) == VariableType.BOOL) { short varValue = (short)varTable.GetValue(varName); short varAddr = varTable.GetAddr(varName); cmdList.Add(AssemblerFac.GenLUI("$T0", varValue.ToString())); cmdList.Add(AssemblerFac.GenSRL("$T0", "$T0", Convert.ToString(16))); cmdList.Add(AssemblerFac.GenSW("$T0", varAddr.ToString(), "$ZERO")); } else { int value = varTable.GetValue(varName); short high = (short)(value >> 16); short varAddr = varTable.GetAddr(varName); cmdList.Add(AssemblerFac.GenLUI("$T0", high.ToString())); short low = (short)(value & 0xffff); cmdList.Add(AssemblerFac.GenORI("$T0", "$T0", low.ToString())); cmdList.Add(AssemblerFac.GenSW("$T0", varAddr.ToString(), "$ZERO")); } } }