|
|
1.1 ! root 1: #include "../machine/alignment.h" ! 2: aobleq(infop) process_info *infop; ! 3: /* ! 4: /* Add one, branch if less or equal. ! 5: /* Can't use real HW opcodes since we don't want to branch here. ! 6: /* ! 7: /*******************************************/ ! 8: { ! 9: register long limit, index, new_address, complement; ! 10: ! 11: limit = operand(infop,0)->data; ! 12: index = operand(infop,1)->data; ! 13: complement = limit + ~index; ! 14: if ( complement < 0){ carry_0; negative_1;} else{negative_0; carry_1;} ! 15: if ( complement == 0) zero_1; else zero_0; ! 16: overflow_0; ! 17: write_back (infop, index+1, operand(infop,1)); ! 18: new_address = operand(infop,2)->address; ! 19: if (!negative || zero) pc = new_address; ! 20: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.