// 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)); }
public AstNodeStmLabel Label(AstLabel astLabel) => new AstNodeStmLabel(astLabel);
public AstNodeStmGotoIfFalse GotoIfFalse(AstLabel astLabel, AstNodeExpr condition) => new AstNodeStmGotoIfFalse(astLabel, condition);
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()) ); } }