# 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 |