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] a1: address of argv[a0].
# @param[out] a2: sizeof(argv[a0]). # @param[out] a2: sizeof(argv[a0]).
fetch_argv: fetch_argv:
addi sp, sp, -8
sd s0, 0(sp)
mv s0, a0 mv s0, a0
addi sp, sp, -16 addi sp, sp, -16
@@ -38,6 +40,8 @@ fetch_argv:
bltz a1, 2f # fail if a0 less than zero bltz a1, 2f # fail if a0 less than zero
ld t0, sp_start ld t0, sp_start
addi t0, t0, 8 addi t0, t0, 8
addi sp, sp, -8
sd s1, 0(sp)
li s1, 0 li s1, 0
ld a0, 0(t0) ld a0, 0(t0)
@@ -55,12 +59,15 @@ fetch_argv:
mv a0, a1 mv a0, a1
addi s1, s1, 1 addi s1, s1, 1
bne s1, s0, 1b # if we haven't retrieved the requested argument, go again bne s1, s0, 1b # if we haven't retrieved the requested argument, go again
j 3f j 3f
2: 2:
li a0, 1 # fail li a0, 1 # fail
j 4f ld s0, 0(sp)
addi sp, sp, 8
ret
3: 3:
mv s0, a1 mv s0, a1
addi sp, sp, -16 addi sp, sp, -16
@@ -79,6 +86,10 @@ fetch_argv:
mv a1, s0 mv a1, s0
4: 4:
ld s1, 0(sp)
addi sp, sp, 8
ld s0, 0(sp)
addi sp, sp, 8
ret ret
+13 -8
View File
@@ -13,12 +13,21 @@ _start:
call save_sp call save_sp
call fetch_argc call fetch_argc
li t0, 1 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 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: 1:
li a0, 1 li a0, 1
@@ -26,10 +35,6 @@ _start:
ecall # return 1 ecall # return 1
2: 2:
mv a0, a1
call cat_file
bnez a0, 1b # error if failed
li a0, 0 li a0, 0
li a7, 93 li a7, 93
ecall # return 0 ecall # return 0