Нет никакой разницы в том, как работают регистры. Существует разница в том, как обычно используются регистры. В соответствии с MIPS calling convention значения регистров $ S $ S0, ..., $ S7 сохраняются во всех вызовах функций, а значения регистров $ T0, ..., $ T9 могут быть изменены вызываемой функцией.
Рассмотрим следующий код в качестве конкретного примера: (. Обратите внимание, что syscall
в основном вызов функции)
li $s3, 42
li $t0, 81
move $a0, $t0 # the value in $a0 will be printed
li $v0, 1 # syscall 1 is print integer
syscall
После syscall
, $ s3 по-прежнему гарантировано вызовах иметь значение 42 , а остальные значения регистров $ sxx не изменяются. Мы не знаем, какое значение в $ T0 будет после вызова, потому что соглашение не требует сохранения его значения.
(ред добавить пример.)
Это не имеет ничего общего с RISC, и не имеет ничего общего с MIPS либо другие, чем это случается, платформа, которая использует это именование, и вызов конвенции и сборки. –