Compare commits

...

2 commits

Author SHA1 Message Date
Imbus
b65b33da25 Square 2024-12-09 12:25:56 +01:00
Imbus
1a31859a31 makefile -> Makefile 2024-12-09 12:21:03 +01:00
5 changed files with 20 additions and 3 deletions

View file

@ -24,6 +24,7 @@ CFLAGS += -fno-common# # Do not use common sections
CFLAGS += -march=rv64i# # Use RV64I ISA, i.e., integer only
CFLAGS += -mabi=lp64# # Use LP64 ABI, i.e., 64-bit longs and pointers, 32-bit ints
CFLAGS += -Os# # Optimize for size
CFLAGS += -Wall -Wunused -O2
LDFLAGS += -T link.ld # Use the linker script
LDFLAGS += --no-dynamic-linker
@ -61,7 +62,7 @@ all: $(OBJS)
@echo "CC $<"
# Run the binary in QEMU
run: all
run: all
@echo "To exit: Ctrl+A, X"
@$(QEMU) $(QEMU_FLAGS) -bios $(TARGET)

View file

@ -5,7 +5,7 @@ MEMORY {
SECTIONS {
.text : {
main.o(.text.*)
*(.text)
*(.text)
. = ALIGN(4);
} > DRAM

2
main.s
View file

@ -25,7 +25,7 @@ test_routine:
ret
# Prints "hello" manually
hello_manual:
hello_manual:
addi a0, x0, 0x68
li a1, 0x10000000
sb a0, (a1) # 'h'

1
square.h Normal file
View file

@ -0,0 +1 @@
int square(int, int);

15
square.s Normal file
View file

@ -0,0 +1,15 @@
square:
addi sp,sp,-32
sd ra,24(sp)
sd s0,16(sp)
addi s0,sp,32
mv a5,a0
sw a5,-20(s0)
lw a5,-20(s0)
mulw a5,a5,a5
sext.w a5,a5
mv a0,a5
ld ra,24(sp)
ld s0,16(sp)
addi sp,sp,32
jr ra