/// <summary> /// Creates a new verifier /// </summary> /// <param name="virtualMachine">The virtual machine</param> public Verifier(VirtualMachine virtualMachine) { this.virtualMachine = virtualMachine; this.intType = this.virtualMachine.TypeProvider.GetPrimitiveType(PrimitiveTypes.Int); this.floatType = this.virtualMachine.TypeProvider.GetPrimitiveType(PrimitiveTypes.Float); this.voidType = this.virtualMachine.TypeProvider.GetPrimitiveType(PrimitiveTypes.Void); }
/// <summary> /// Adds the native library to the given VM /// </summary> /// <param name="virtualMachine">The virtual machine</param> public static void Add(VirtualMachine virtualMachine) { var intType = virtualMachine.TypeProvider.GetPrimitiveType(PrimitiveTypes.Int); var floatType = virtualMachine.TypeProvider.GetPrimitiveType(PrimitiveTypes.Float); var voidType = virtualMachine.TypeProvider.GetPrimitiveType(PrimitiveTypes.Void); virtualMachine.Binder.Define(FunctionDefinition.NewExternal<FuncVoidArgInt>( "std.println", new List<VMType>() { intType }, voidType, Println)); virtualMachine.Binder.Define(FunctionDefinition.NewExternal<FuncVoidArgFloat>( "std.println", new List<VMType>() { floatType }, voidType, Println)); }
/// <summary> /// Creates a new code generator /// </summary> /// <param name="virtualMachine">The virtual machine</param> public CodeGenerator(VirtualMachine virtualMachine) { this.virtualMachine = virtualMachine; }
/// <summary> /// Creates a new code generator /// </summary> /// <param name="virtualMachine">The virtual machine</param> public OptimizedCodeGenerator(VirtualMachine virtualMachine) { this.virtualMachine = virtualMachine; }
/// <summary> /// Creates a new Windows x64 container /// </summary> public Win64Container() { this.VirtualMachine = new VirtualMachine(vm => new JITCompiler(vm)); NativeLibrary.Add(this.VirtualMachine); }
/// <summary> /// Creates a new compiler /// </summary> /// <param name="virtualMachine">The virtual machine</param> public JITCompiler(VirtualMachine virtualMachine) { this.virtualMachine = virtualMachine; this.codeGen = new CodeGenerator(virtualMachine); this.optimizedCodeGen = new OptimizedCodeGenerator(virtualMachine); }