Add multi file input

This commit is contained in:
2026-09-11 23:47:18 -04:00
parent fe856ff3d9
commit 8cf0d06780
2 changed files with 26 additions and 10 deletions
+13 -2
View File
@@ -24,6 +24,8 @@ fetch_argc:
# @param[out] a1: address of argv[a0].
# @param[out] a2: sizeof(argv[a0]).
fetch_argv:
addi sp, sp, -8
sd s0, 0(sp)
mv s0, a0
addi sp, sp, -16
@@ -38,6 +40,8 @@ fetch_argv:
bltz a1, 2f # fail if a0 less than zero
ld t0, sp_start
addi t0, t0, 8
addi sp, sp, -8
sd s1, 0(sp)
li s1, 0
ld a0, 0(t0)
@@ -55,12 +59,15 @@ fetch_argv:
mv a0, a1
addi s1, s1, 1
bne s1, s0, 1b # if we haven't retrieved the requested argument, go again
j 3f
2:
li a0, 1 # fail
j 4f
ld s0, 0(sp)
addi sp, sp, 8
ret
3:
mv s0, a1
addi sp, sp, -16
@@ -79,6 +86,10 @@ fetch_argv:
mv a1, s0
4:
ld s1, 0(sp)
addi sp, sp, 8
ld s0, 0(sp)
addi sp, sp, 8
ret
+13 -8
View File
@@ -13,12 +13,21 @@ _start:
call save_sp
call fetch_argc
li t0, 1
ble a1, t0, 1f # return 1 on no file given
ble a1, t0, 1f # return 1 if no file given
mv s0, a1 # store argc
li s1, 1 # i=1 (skip program name)
li a0, 1
3:
mv a0, s1
call fetch_argv
beqz a0, 2f
bnez a0, 1f # error if failed
mv a0, a1
call cat_file
bnez a0, 1f # error if failed
addi s1, s1, 1
blt s1, s0, 3b
j 2f
1:
li a0, 1
@@ -26,10 +35,6 @@ _start:
ecall # return 1
2:
mv a0, a1
call cat_file
bnez a0, 1b # error if failed
li a0, 0
li a7, 93
ecall # return 0