From 46406a2e87a46b12e1c8216f0e410629d93dcb79 Mon Sep 17 00:00:00 2001 From: lexzach Date: Fri, 11 Sep 2026 19:32:18 -0400 Subject: [PATCH] Save sp --- src/args.S | 19 ++++++++++++++++--- src/main.S | 9 ++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/args.S b/src/args.S index 09bfb12..5165b65 100644 --- a/src/args.S +++ b/src/args.S @@ -1,9 +1,22 @@ -.globl fetch_argc, fetch_argv +.data +sp_start: .space 8 + +.section .text +.globl save_sp, fetch_argc, fetch_argv + +save_sp: + sd sp, sp_start, t0 # save the stack pointer + ret # Fetch argument count # @param[in] a0: unused. # @param[out] a0: number of arguments. fetch_argc: - ld a0, 0(sp) + ld t0, sp_start # dereference the buffer + ld a0, 0(t0) # dereference the address ret - \ No newline at end of file + +# Fetch argument value +# @param[in] a0: argv[a0]. +# @param[out] a0: address of arg. +fetch_argv: diff --git a/src/main.S b/src/main.S index 1dba456..00a9c20 100644 --- a/src/main.S +++ b/src/main.S @@ -1,5 +1,5 @@ .data -argc: .space 8 +argc: .space 8 .section .text .globl _start @@ -10,13 +10,16 @@ _start: la gp, __global_pointer$ .option pop - + call save_sp call fetch_argc + li t0, 48 add a0, a0, t0 sd a0, argc, t0 - + # li a0, 1 + # call fetch_argv + li a0, 1 la a1, argc li a2, 1