made it more of a library
This commit is contained in:
parent
51bef30657
commit
9312bf9a64
4 changed files with 58 additions and 37 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
build/
|
42
Makefile
Normal file
42
Makefile
Normal file
|
@ -0,0 +1,42 @@
|
|||
# Compiler and flags
|
||||
CC = clang
|
||||
CFLAGS = --target=riscv32 -march=rv64gc_zbb -mabi=lp64 -mno-relax -g
|
||||
|
||||
# Directories and files
|
||||
BUILD_DIR = build
|
||||
ZOMUTILS_SRC = libzomutils.s
|
||||
ZOMUTILS_OBJ = $(BUILD_DIR)/libzomutils.o
|
||||
ZOMUTILS_LIB = $(BUILD_DIR)/libzomutils.a
|
||||
HELLO_SRC = hello.s
|
||||
HELLO_OBJ = $(BUILD_DIR)/hello.o
|
||||
HELLO_BIN = $(BUILD_DIR)/hello
|
||||
|
||||
# Default target
|
||||
all: $(HELLO_BIN)
|
||||
|
||||
# Ensure build directory exists
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $(BUILD_DIR)
|
||||
|
||||
# Build libzomutils object file
|
||||
$(ZOMUTILS_OBJ): $(ZOMUTILS_SRC) | $(BUILD_DIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# Create static library libzomutils.a
|
||||
$(ZOMUTILS_LIB): $(ZOMUTILS_OBJ)
|
||||
ar rcs $@ $^
|
||||
|
||||
# Build hello object file
|
||||
$(HELLO_OBJ): $(HELLO_SRC) | $(BUILD_DIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# Link hello executable with libzomutils.a
|
||||
$(HELLO_BIN): $(HELLO_OBJ) $(ZOMUTILS_LIB)
|
||||
$(CC) $(CFLAGS) -nostdlib $^ -o $@
|
||||
|
||||
# Clean up generated files
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
.PHONY: all clean
|
||||
|
25
hello.s
25
hello.s
|
@ -1,17 +1,16 @@
|
|||
.globl _start
|
||||
.section .data
|
||||
message:
|
||||
.asciz "Hello from libzomutils!\n"
|
||||
|
||||
.section .text
|
||||
.global _start
|
||||
|
||||
_start:
|
||||
li a0, 1 # file descriptor = 1 (stdout)
|
||||
la a1, string # buffer
|
||||
li a2, 19 # size
|
||||
li a7, 64 # syscall write (64)
|
||||
ecall
|
||||
# Load the address of the message into a0 (first argument register)
|
||||
la a0, message
|
||||
|
||||
_end:
|
||||
# Call the puts function from libzomutils
|
||||
call puts
|
||||
|
||||
li a0, 0 # exit code
|
||||
li a7, 93 # syscall exit
|
||||
ecall
|
||||
|
||||
|
||||
string: .asciz "Hello! It works!!!\n"
|
||||
# Exit the program
|
||||
call exit
|
||||
|
|
|
@ -1,23 +1,8 @@
|
|||
.text
|
||||
.globl _start
|
||||
|
||||
_start:
|
||||
ld a0, 8(sp)
|
||||
jal ra, puts
|
||||
la a0, helloworld
|
||||
jal ra, puts
|
||||
la a0, incomingflag
|
||||
jal ra, puts
|
||||
|
||||
|
||||
ld t2, flagmyballs
|
||||
ror t2, t2, 01
|
||||
la t1, flagmyballs
|
||||
sd t2, 0(t1)
|
||||
|
||||
la a0, flagmyballs
|
||||
jal ra, puts
|
||||
j exit
|
||||
.globl len
|
||||
.globl puts
|
||||
.globl exit
|
||||
|
||||
len:
|
||||
mv t0, a0
|
||||
|
@ -70,9 +55,3 @@ exit:
|
|||
li a7, 93 # syscall exit
|
||||
ecall
|
||||
|
||||
.data
|
||||
helloworld: .asciz "Hello! It works!!!\n"
|
||||
incomingflag: .asciz "The flag you gotta fix should be right after the newline\n"
|
||||
flagmyballs:
|
||||
# .dword 0x7370617263363400
|
||||
.dword 0x0343663726170730
|
Loading…
Reference in a new issue