예제 #1
0
 public CfgNodeCompiler(CfgNode cfgNode)
 {
     m_cppBuilder = cfgNode.CfgBuilder.CppBuilder;
     m_commonTypeLookup = new CommonTypeLookup(m_cppBuilder);
     m_cfgNode = cfgNode;
     m_ehRegion = cfgNode.CfgBuilder.Region;
     m_escapePaths = new SortedSet<uint>();
     m_temporaries = cfgNode.CfgBuilder.Temporaries;
 }
예제 #2
0
 private static MidInstruction.ArithEnum ArithModeForShiftOp(CommonTypeLookup lookup, CLRTypeSpec ls, CLRTypeSpec rs)
 {
     // III.6
     if (ls.Equals(lookup.I32))
     {
         if (rs.Equals(lookup.I32))
             return MidInstruction.ArithEnum.ArithType_Int32;
         throw new ArgumentException();
     }
     if (ls.Equals(lookup.I64))
     {
         if (rs.Equals(lookup.I64))
             return MidInstruction.ArithEnum.ArithType_Int64;
         if (rs.Equals(lookup.I))
             return MidInstruction.ArithEnum.ArithType_Int64;
         throw new ArgumentException();
     }
     if (ls.Equals(lookup.I))
     {
         if (rs.Equals(lookup.I64))
             return MidInstruction.ArithEnum.ArithType_NativeInt;
         if (rs.Equals(lookup.I))
             return MidInstruction.ArithEnum.ArithType_NativeInt;
         throw new ArgumentException();
     }
     throw new ArgumentException();
 }