예제 #1
0
 /// <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"));
         }
     }
 }