// Code executed after the delayed slot.
		public AstNodeStm _branch_post(AstLabel BranchLabel, uint BranchPC)
		{
			if (this.AndLink)
			{
#if ENABLE_NATIVE_CALLS
				return ast.IfElse(
					BranchFlag(),
					ast.Statements(
						AssignGPR(31, BranchPC + 8),
						CallFixedAddress(BranchPC)
					)
				);
#else
				return ast.IfElse(
					BranchFlag(),
					ast.Statements(
						AssignGPR(31, BranchPC + 8),
						ast.GotoAlways(BranchLabel)
					)
				);
#endif
			}
			else
			{
				return ast.GotoIfTrue(BranchLabel, BranchFlag());
			}
		}
 public AstNodeStmLabel Label(AstLabel AstLabel)
 {
     return(new AstNodeStmLabel(AstLabel));
 }
 public AstNodeStmGotoIfFalse GotoIfFalse(AstLabel AstLabel, AstNodeExpr Condition)
 {
     return(new AstNodeStmGotoIfFalse(AstLabel, Condition));
 }
 public AstNodeStmGoto GotoAlways(AstLabel AstLabel)
 {
     return(new AstNodeStmGotoAlways(AstLabel));
 }
Exemple #5
0
 public AstNodeStmLabel Label(AstLabel astLabel) => new AstNodeStmLabel(astLabel);
Exemple #6
0
 public AstNodeStmGotoIfFalse GotoIfFalse(AstLabel astLabel, AstNodeExpr condition) =>
 new AstNodeStmGotoIfFalse(astLabel, condition);
Exemple #7
0
 public AstNodeStmGoto GotoAlways(AstLabel astLabel) => new AstNodeStmGotoAlways(astLabel);
 // Code executed after the delayed slot.
 public AstNodeStm _branch_post(AstLabel BranchLabel, uint BranchPC)
 {
     if (this.AndLink)
     {
         return ast.If(
             BranchFlag(),
             ast.StatementsInline(
                 ast.AssignGPR(31, BranchPC + 8),
                 CallFixedAddress(BranchPC)
             )
         );
     }
     else
     {
         return ast.Statements(
             //ast.AssignPC(PC),
             //ast.GetTickCall(),
             ast.GotoIfTrue(BranchLabel, BranchFlag())
         );
     }
 }