예제 #1
0
 internal void GenerateStore(LocalStructure local)
 {
     var lb = local.GainLocal();
     if (lb.LocalIndex <= 255)
     {
         switch (lb.LocalIndex)
         {
             case 0: Generator.Emit(OpCodes.Stloc_0); break;
             case 1: Generator.Emit(OpCodes.Stloc_1); break;
             case 2: Generator.Emit(OpCodes.Stloc_2); break;
             case 3: Generator.Emit(OpCodes.Stloc_3); break;
             default: Generator.Emit(OpCodes.Stloc_S, lb); break;
         }
     }
     else
     {
         Generator.Emit(OpCodes.Stloc, lb);
     }
 }
예제 #2
0
 internal void GenerateLoadAddress(LocalStructure local)
 {
     var lb = local.GainLocal();
     if (lb.LocalIndex <= 255)
     {
         Generator.Emit(OpCodes.Ldloca_S, lb);
     }
     else
     {
         Generator.Emit(OpCodes.Ldloca, lb);
     }
 }