При чтении файла в MIPS, он читает последнюю строку дважды
Мне удалось (частично) успешно прочитать файл в MIPs. Ниже мой текущий код. В QtSpim при запуске я получаю указатель на файл в $ a1, но последние несколько символов файла повторяются дважды. Количество повторяющихся символов меняется в зависимости от файла. Из того, что я видел, кажется, что это связано с количеством символов новой строки в файле, если символы новой строки не находятся в самом конце файла (то есть, если было 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