Add multi file input
This commit is contained in:
+12
-1
@@ -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)
|
||||
@@ -60,7 +64,10 @@ fetch_argv:
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
+12
-7
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user