public override Register GenCode()
    {
        Register targetRegister = RegisterAllocator.GetNextRegister();

        Console.WriteLine("const/16 v{0}, #int {1}", targetRegister.GetIndex(), val);
        return(targetRegister);
    }
    public override Register GenCode()
    {
        Register firstRegister  = left.GenCode();
        Register secondRegister = right.GenCode();
        Register targetRegister = RegisterAllocator.GetNextRegister();

        Console.WriteLine("add-int v{0}, v{1}, v{2}", targetRegister.GetIndex(), firstRegister.GetIndex(), secondRegister.GetIndex());
        return(targetRegister);
    }