public static Tile MemReg_Reg()
 {
     return(new Tile(typeof(AssignmentNode),
                     new[] {
         makeTile <MemoryNode> (
             makeTile <RegisterNode> ()
             ),
         makeTile <RegisterNode> ()
     },
                     (regNode, node) => {
         var root = node as AssignmentNode;
         var mem = root.Target as MemoryNode;
         var dst = mem.Address as RegisterNode;
         var src = root.Source as RegisterNode;
         return new[] {
             InstructionFactory.MoveToMemory(dst, src),
             InstructionFactory.Move(regNode, src)
         };
     }
                     ));
 }