Esempio n. 1
0
        private TestCaseAssemblyCompiler(IArchitecture architecture, IMetadataModule module) :
            base(architecture, module)
        {
            // Build the assembly compiler pipeline
            CompilerPipeline pipeline = this.Pipeline;

            pipeline.AddRange(new IAssemblyCompilerStage[] {
                new TypeLayoutStage(),
                new MethodCompilerBuilderStage(),
                new MethodCompilerRunnerStage(),
                // __grover, 01/02/2009: No object files in test!
                // new ObjectFileLayoutStage()
                new TestAssemblyLinker(),
            });
            architecture.ExtendAssemblyCompilerPipeline(pipeline);
        }
Esempio n. 2
0
 /// <summary>
 /// Extends the method compiler pipeline with x86 specific stages.
 /// </summary>
 /// <param name="methodCompilerPipeline">The method compiler pipeline to extend.</param>
 public override void ExtendMethodCompilerPipeline(CompilerPipeline methodCompilerPipeline)
 {
     // FIXME: Create a specific code generator instance using requested feature flags.
     // FIXME: Add some more optimization passes, which take advantage of advanced x86 instructions
     // and packed operations available with MMX/SSE extensions
     methodCompilerPipeline.AddRange(new IMethodCompilerStage[] {
         new LongOperandTransformationStage(),
         new InstructionLogger(typeof(LongOperandTransformationStage)),
         new AddressModeConversionStage(),
         new InstructionLogger(typeof(AddressModeConversionStage)),
         new CILTransformationStage(),
         new InstructionLogger(typeof(CILTransformationStage)),
         new IRTransformationStage(),
         new InstructionLogger(typeof(IRTransformationStage)),
         new TweakTransformationStage(),
         new InstructionLogger(typeof(TweakTransformationStage)),
         new MemToMemConversionStage(),
         new InstructionLogger(typeof(MemToMemConversionStage)),
         new SimplePeepholeOptimizationStage(),
         new InstructionLogger(typeof(SimplePeepholeOptimizationStage))
         //FlowGraphVisualizationStage.Instance,
     });
 }
Esempio n. 3
0
 /// <summary>
 /// Extends the method compiler pipeline with x86 specific stages.
 /// </summary>
 /// <param name="methodCompilerPipeline">The method compiler pipeline to extend.</param>
 public override void ExtendMethodCompilerPipeline(CompilerPipeline methodCompilerPipeline)
 {
     // FIXME: Create a specific code generator instance using requested feature flags.
     // FIXME: Add some more optimization passes, which take advantage of advanced x86 instructions
     // and packed operations available with MMX/SSE extensions
     methodCompilerPipeline.AddRange (new IMethodCompilerStage[] {
         new LongOperandTransformationStage (),
         new InstructionLogger (typeof(LongOperandTransformationStage)),
         new AddressModeConversionStage (),
         new InstructionLogger (typeof(AddressModeConversionStage)),
         new CILTransformationStage (),
         new InstructionLogger (typeof(CILTransformationStage)),
         new IRTransformationStage (),
         new InstructionLogger (typeof(IRTransformationStage)),
         new TweakTransformationStage (),
         new InstructionLogger (typeof(TweakTransformationStage)),
         new MemToMemConversionStage (),
         new InstructionLogger (typeof(MemToMemConversionStage)),
         new SimplePeepholeOptimizationStage (),
         new InstructionLogger (typeof(SimplePeepholeOptimizationStage))
         //FlowGraphVisualizationStage.Instance,
     });
 }