|  | # mach: crisv0 crisv3 crisv8 crisv10 crisv32 | 
|  | # output: a\n | 
|  |  | 
|  |  | 
|  | .set smalloffset,0 | 
|  | .set largeoffset,0 | 
|  |  | 
|  |  | 
|  | .macro fail | 
|  | jump _fail | 
|  | .endm | 
|  |  | 
|  | .global	main | 
|  | main: | 
|  | moveq 0,$r3 | 
|  |  | 
|  | ; Short forward branch. | 
|  | ba 0f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | ; Max short forward branch. | 
|  | 1: | 
|  | ba 2f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | ; Short backward branch. | 
|  | 0: | 
|  | ba 1b | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | .space 254-2+smalloffset+1b-.,0 | 
|  | moveq 0,$r3 | 
|  |  | 
|  | 2: | 
|  | ; Transit branch (long). | 
|  | ba 3f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | moveq 0,$r3 | 
|  | 4: | 
|  | ; Long forward branch. | 
|  | ba 5f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | .space 256-2-smalloffset+4b-.,0 | 
|  |  | 
|  | moveq 0,$r3 | 
|  |  | 
|  | ; Max short backward branch. | 
|  | 3: | 
|  | ba 4b | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | 5: | 
|  | ; Max long forward branch. | 
|  | ba 6f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | .space 32766+largeoffset-2+5b-.,0 | 
|  |  | 
|  | moveq 0,$r3 | 
|  | 6: | 
|  | ; Transit branch. | 
|  | ba 7f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | moveq 0,$r3 | 
|  | 9: | 
|  | jsr pass | 
|  | nop | 
|  |  | 
|  | ; Transit branch. | 
|  | moveq 0,$r3 | 
|  | 7: | 
|  | ba 8f | 
|  | addq 1,$r3 | 
|  | fail | 
|  |  | 
|  | .space 32768-largeoffset+9b-.,0 | 
|  |  | 
|  | 8: | 
|  | ; Max long backward branch. | 
|  | ba 9b | 
|  | addq 1,$r3 | 
|  | fail |