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"); }