Мне не известно о существующей архитектуре MIPS, которая поддерживает ссылку на регистр по содержимому регистра, что позволило бы предложить тип, который вы предлагаете, например:
move $t0, $zero
mover $t0, $s0 # $s0 = register($t0) = register(0)
addi $t0, 1
mover $t0, $s1 # $s1 = register($t0) = register(1)
addi $t0, 1
...
Хотя в любом случае, на мой взгляд, это не очень хорошая идея по нескольким причинам. Во-первых, вы все равно имеете дело с очень небольшим количеством регистров, поэтому в любом случае есть небольшая верхняя граница цикла, что делает прямой подход не намного менее гибким.
Что еще более важно, подобная петля была бы ужасно неэффективной. Он инициализирует, увеличивает, выполняет move
и проверку ветвления (как минимум) для каждой итерации. Даже без учета остановок филиалов это как минимум в 3 раза медленнее, чем просто:
move $t0, $s0
move $t1, $s1
...
move $t8, $s8