66 lines
791 B
ArmAsm
66 lines
791 B
ArmAsm
.text
|
|
.global _start, _write, _exit
|
|
.global _tc_fail, _tc_pass
|
|
|
|
_write:
|
|
addi sp, sp, -4
|
|
sw (sp+4), r8
|
|
mvi r8, 5
|
|
scall
|
|
lw r8, (sp+4)
|
|
addi sp, sp, 4
|
|
ret
|
|
|
|
_exit:
|
|
mvi r8, 1
|
|
scall
|
|
1:
|
|
bi 1b
|
|
|
|
_tc_pass:
|
|
.data
|
|
1:
|
|
.ascii "OK\n"
|
|
2:
|
|
.text
|
|
addi sp, sp, -16
|
|
sw (sp+4), ra
|
|
sw (sp+8), r1
|
|
sw (sp+12), r2
|
|
sw (sp+16), r3
|
|
mvi r1, 1
|
|
mvhi r2, hi(1b)
|
|
ori r2, r2, lo(1b)
|
|
mvi r3, (2b - 1b)
|
|
calli _write
|
|
lw r3, (sp+16)
|
|
lw r2, (sp+12)
|
|
lw r1, (sp+8)
|
|
lw ra, (sp+4)
|
|
addi sp, sp, 16
|
|
ret
|
|
|
|
_tc_fail:
|
|
.data
|
|
1:
|
|
.ascii "FAILED\n"
|
|
2:
|
|
.text
|
|
addi sp, sp, -16
|
|
sw (sp+4), ra
|
|
sw (sp+8), r1
|
|
sw (sp+12), r2
|
|
sw (sp+16), r3
|
|
sw (sp+4), ra
|
|
mvi r1, 1
|
|
mvhi r2, hi(1b)
|
|
ori r2, r2, lo(1b)
|
|
mvi r3, (2b - 1b)
|
|
calli _write
|
|
lw r3, (sp+16)
|
|
lw r2, (sp+12)
|
|
lw r1, (sp+8)
|
|
lw ra, (sp+4)
|
|
addi sp, sp, 16
|
|
ret
|