2

MIP でファイルを (部分的に) 正常に読み取ることができました。以下は私の現在のコードです。QtSpim で実行すると、$a1 にファイルへのポインターが表示されますが、ファイルの最後の数文字が 2 回繰り返されます。繰り返す文字数はファイルによって異なります。私が見たところ、改行文字がファイルの最後にない限り、ファイル内の改行文字の数にリンクしているようです (つまり、改行文字が 5 つある場合、ファイルの最後の 5 文字は、読み込まれたファイルの最後に重複して表示されます)、これが真であるべき理由はわかりません。(参考までに、このコードは、書き込みではなく読み取りを除いて、ここからほぼそのままコピーされています)

.data
fin: .asciiz "c:/input.txt"
fBuffer: .space 1024
.text
main:
    jal  openFile
    jr   $ra

#returns: pointer to file's text in $a1
openFile:
    li   $v0, 13       # system call for open file 
    la   $a0, fin  #fin is the file name
    li   $a1, 0    # 0 means 'read'
    li   $a2, 0
    syscall            # open file
    move $s6, $v0      # save the file descriptor

    #read from file
    li   $v0, 14       # system call for read from file
    move $a0, $s6      # file descriptor 
    la   $a1, fBuffer   
    li   $a2, 1024     # hardcoded buffer length
    syscall            # read from file

    # Close the file 
    li   $v0, 16       # system call for close file
    move $a0, $s6      # file descriptor to close
    syscall            # close file
    jr $ra
4

1 に答える 1