94 lines
937 B
ArmAsm
94 lines
937 B
ArmAsm
# 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
|