public override string Template() { return($"{LeftExpression.Template()}" + "\nmovq\t%rax,%rcx" + $"\n{RightExpression.Template()}" + $"\n{AssignmentTemplate}\t# assign {RightExpression} to {LeftExpression}" + $"\n{LeftExpression.Save()}"); }
public override string Template() { return ($"{LeftExpression.Template()}" + "\npush\t%rax" + $"\n{RightExpression.Template()}" + "\nmovq\t%rax,%rbx" + "\npop\t%rax" + "\ncqo" + $"\n{BinaryTemplate}"); }
public override string Template() { return($"{RightExpression.Template()}\nmovq\t%rax,%rbx\n{LeftExpression.Template()}\n{AssignmentTemplate}\n{LeftExpression.Save()}"); // var retrieve = $"\nmovq\t{varIndex}(%rbp),%rax"; // const string div = "\nidiv\t%rbx"; // var assign = $"\nmovq\t%rax,{varIndex}(%rbp)"; // // return $"{Expression.Template()}" + // "\nmovq\t%rax,%rbx" + // retrieve + // "\ncqo" + // div + // assign; }
public override string Template() { var data = $"{LeftExpression.Template()}" + "\npush\t%rax" + $"\n{RightExpression.Template()}" + "\nmovq\t%rax,%rbx" + "\npop\t%rax" + "\ncqo"; return (data + "\nidivq\t%rbx" + "\nmovq\t$0,%rax" + "\nmovq\t%rdx,%rax"); }
public override string Template() { var branchName = Healpers.GetFunctionId(); var endName = Healpers.GetFunctionId(); var main = $"{LeftExpression.Template()}" + "\ncmpq\t$0,%rax" + $"\nje\t{branchName}\t# OR ({LeftExpression} || {RightExpression})" + "\nmovq\t$1,%rax" + $"\njmp\t{endName}"; var branch = $"\n{branchName}:" + $"\n{RightExpression.Template()}" + "\ncmpq\t$0,%rax" + "\nmovq\t$0,%rax" + "\nsetne\t%al"; var end = $"\n{endName}:"; return(main + branch + end); }
public override string Template() { return($"{LeftExpression.Template()}\n{AssignmentTemplate}\n{LeftExpression.Save()}"); }
public override string Template() { return($"{RightExpression.Template()}\npush\t%rax\n{LeftExpression.Template()}\npop\t%rcx\n{BinaryTemplate}"); }
public override string Template() { return($"{RightExpression.Template()}\nmovq\t%rax,%rbx\n{LeftExpression.Template()}\n{AssignmentTemplate}\nmovq\t$0,%rax\nmovq\t%rdx,%rax\n{LeftExpression.Save()}"); }