示例#1
0
        public void AddTest()
        {
            var templates = new List <InstructionTemplate> {
                new AddTemplate(), new RegisterReadTemplate()
            };
            var v1       = new RegisterRead(new VirtualRegister());
            var v2       = new RegisterRead(new VirtualRegister());
            var v3       = new RegisterRead(new VirtualRegister());
            var node     = new ArithmeticBinaryOperation(ArithmeticOperationType.Addition, v1, v2);
            var root     = new ArithmeticBinaryOperation(ArithmeticOperationType.Addition, v3, node);
            var tree     = new Tree(root, new Ret());
            var selector = new InstructionSelector(templates);
            var ins      = selector.GetInstructions(tree);

            Assert.AreEqual(6, ins.Count());
        }
示例#2
0
 public ConstantAddTemplate(ArithmeticBinaryOperation template)
     : base(template, 5)
 {
     this.template = template;
 }