Я нашел этот код:
.data
buffer: .space 20
...
_readString:
li $v0, 8 # Syscall 8: Read string
la $a0, buffer # load byte space into address
addi $a1, $zero, 20 # allot the byte space for string
syscall
jr $ra
Но я не понимаю этого. Что делают линии la
и addi
? Означает ли буферное пространство в 20 символов 20 символов?
Я нашел подобный код в уроке MIPS моего класса:
li $v0, 8 - syscall code for reading a string
la $a0, buffer - load buffer address into register
li $a1, 20 - max. bytes for syscall to read
move $t0, $a0 - move string to $t0 to do something with it
syscall
Но почему происходит перемещение $ a0 (предполагаемое место, гдестрока будет сохранена) произойдет до системного вызова? Почему это имеет смысл?