1 /* Aaobleq.c 1.2 90/12/04 */ 2 3 #include "align.h" 4 aobleq(infop) process_info *infop; 5 /* 6 /* Add one, branch if less or equal. 7 /* Can't use real HW opcodes since we don't want to branch here. 8 /* 9 /*******************************************/ 10 { 11 register long limit, index, new_address, complement; 12 13 limit = operand(infop,0)->data; 14 index = operand(infop,1)->data; 15 complement = limit + ~index; 16 if ( complement < 0){ carry_0; negative_1;} else{negative_0; carry_1;} 17 if ( complement == 0) zero_1; else zero_0; 18 overflow_0; 19 write_back (infop, index+1, operand(infop,1)); 20 new_address = operand(infop,2)->address; 21 if (!negative || zero) pc = new_address; 22 } 23