From 155623f85f728b0a5042063b4d43c0255e4748fa Mon Sep 17 00:00:00 2001 From: cheapie Date: Fri, 6 Nov 2026 14:38:59 -0600 Subject: Add fizzbuzz sample --- assembly/fizzbuzz/Makefile | 24 ++++++++++++++++++++++ assembly/fizzbuzz/fizzbuzz.S | 43 +++++++++++++++++++++++++++++++++++++++ assembly/fizzbuzz/rvcontroller.ld | 1 + 3 files changed, 68 insertions(+) create mode 100644 assembly/fizzbuzz/Makefile create mode 100644 assembly/fizzbuzz/fizzbuzz.S create mode 120000 assembly/fizzbuzz/rvcontroller.ld diff --git a/assembly/fizzbuzz/Makefile b/assembly/fizzbuzz/Makefile new file mode 100644 index 0000000..56c96d6 --- /dev/null +++ b/assembly/fizzbuzz/Makefile @@ -0,0 +1,24 @@ +MARCH ?= rv32imacbzicntr_zicond_zicsr_zifencei_zihintpause_zilsd_zclsd_zabha_zacas_zbkb_zbkx_zcb_zcmp_zcmt + +.PHONY: all dump load clean + +all: fizzbuzz.hex + +fizzbuzz.o: fizzbuzz.S + riscv32-none-elf-as -I../rvcontroller-libraries -march=${MARCH} -o fizzbuzz.o fizzbuzz.S + +fizzbuzz.elf: fizzbuzz.o + riscv32-none-elf-ld -T rvcontroller.ld --no-warn-rwx-segments -o fizzbuzz.elf fizzbuzz.o + +dump: fizzbuzz.elf + riscv32-none-elf-objdump -d fizzbuzz.elf + +fizzbuzz.hex: fizzbuzz.elf + riscv32-none-elf-objcopy -O ihex fizzbuzz.elf fizzbuzz.hex + +load: fizzbuzz.hex + bash -c "wl-copy < fizzbuzz.hex" + +clean: + rm -f fizzbuzz.hex fizzbuzz.elf fizzbuzz.o + diff --git a/assembly/fizzbuzz/fizzbuzz.S b/assembly/fizzbuzz/fizzbuzz.S new file mode 100644 index 0000000..9960776 --- /dev/null +++ b/assembly/fizzbuzz/fizzbuzz.S @@ -0,0 +1,43 @@ +li s0,0 +li s1,15 +li s2,5 +li s3,3 +li s4,100 +mainloop: +li a0,'\n' +li a7,11 +ecall +bge s0,s4,end +addi s0,s0,1 +remu t0,s0,s1 +bnez t0,1f +la a0,fizz +li a7,4 +ecall +la a0,buzz +li a7,4 +ecall +j mainloop +1: remu t0,s0,s2 +bnez t0,1f +la a0,buzz +li a7,4 +ecall +j mainloop +1: remu t0,s0,s3 +bnez t0,1f +la a0,fizz +li a7,4 +ecall +j mainloop +1: mv a0,s0 +li a7,1 +ecall +j mainloop + +end: +li a7,10 +ecall + +fizz: .asciz "Fizz" +buzz: .asciz "Buzz" diff --git a/assembly/fizzbuzz/rvcontroller.ld b/assembly/fizzbuzz/rvcontroller.ld new file mode 120000 index 0000000..bc01402 --- /dev/null +++ b/assembly/fizzbuzz/rvcontroller.ld @@ -0,0 +1 @@ +../../rvcontroller.ld \ No newline at end of file -- cgit v1.2.3