Exemplo n.º 1
0
        public override string Template()
        {
            var conditionFunc = Healpers.GetFunctionId();
            var endFunc       = Healpers.GetFunctionId();


            var tmp =
                $"# for {Initialise};{Condition};{PostExpression}" +
                $"\n{Initialise.Template()}" +
                $"\n{conditionFunc}:" +
                $"\n# {Condition}" +
                $"\n{Condition.Template()}" +
                "\ncmpq\t$0,%rax\t# compare condition result to 0" +
                $"\nje\t{endFunc}\t# jump to end if condition false" +
                $"\n{Statement.Template()}";

            var end =
                $"\n{PostExpression.Template()}" +
                $"\njmp\t{conditionFunc}\t# loop" +
                $"\n{endFunc}:\n";

            var continuePoint = Scope.UseContinue();
            var breakPoint    = Scope.UseBreakpoint();

            return(tmp + (continuePoint != null ? $"\n{continuePoint}:\t# Continue point" : "") + end + (breakPoint != null ? $"{breakPoint}:\t# Breakpoint\n" : ""));
        }
        public override string Template()
        {
            if (Initialise != null)
            {
                return($"\n{Initialise.Template()}\npushq\t%rax\t\t# initialising {Identifier} with declare\n");
            }

            return($"\nmovq\t$0,%rax\npushq\t%rax\t# initialising {Identifier} as 0\n");
        }