Ejemplo n.º 1
0
        static DynamicAsmManager()
        {
            var asmName = new AssemblyName(TidaAsmName);

            AsmBuilder    = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave);
            ModuleBuilder = AsmBuilder.DefineDynamicModule(asmName.Name, asmName.Name + ".dll");
        }
Ejemplo n.º 2
0
        static DynamicAsmManager()
        {
            var asmName = new AssemblyName(TidaAsmName);

            AsmBuilder    = AssemblyBuilder.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndCollect);
            ModuleBuilder = AsmBuilder.DefineDynamicModule(asmName.Name);
        }
Ejemplo n.º 3
0
    public CodeEmitor(string name, Dictionary <string, FuncMeta> funcs)
    {
        Name                = name;
        m_fileName          = name + "_Script.exe";
        FuncName2MethodInfo = new Dictionary <string, MethodInfo>();

        AsmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(name), AssemblyBuilderAccess.RunAndSave);
        var moduleBuilder = AsmBuilder.DefineDynamicModule(name + "_MainModule", m_fileName);

        TypeBuilder = moduleBuilder.DefineType(name + "_MainClass");

        GlobalField = TypeBuilder.DefineField("s_global", typeof(Dictionary <string, object>), FieldAttributes.Static | FieldAttributes.Private);
        buildStaticConstructor();
        BuildinCodeEmitor.emitBuildins(this);

        var stmts = from kv in funcs select new StmtNodeVisitor_CodeEmitor(this, kv.Value);

        foreach (var stmt in stmts)
        {
            stmt.emit();
        }

        m_mainClass = TypeBuilder.CreateType();
    }