MIPS сборка, регистрация обхода? - PullRequest
0 голосов
/ 25 февраля 2011

Привет и заранее спасибо,

У меня вопрос: возможно ли пройти через регистры, например, указатель в одном ($ t0) и перемещение указателя в другой ($ t1).

Что я на самом деле хочу сделать, так это за один цикл прочитать 8 целых чисел и сохранить их в ($ s0- $ s7)

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

Вы хотите, чтобы номер регистра был переменным?Я не знаю MIPS внутри и снаружи, но я сомневаюсь, что это возможно.Единственные известные мне ISA, которые имеют что-то подобное, это SPARC (окна регистров, которые нельзя использовать для того, что вы хотите) и IA64 («вращающиеся регистры», могут использоваться для того, что вы хотите, но только с плавающей запятой).

0 голосов
/ 25 февраля 2011

Мне не известно о существующей архитектуре 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
0 голосов
/ 25 февраля 2011

Вы можете попробовать изменить биты в коде операции sw, чтобы указать на увеличение регистров, но это ужасная идея.Я думаю, что вам лучше всего написать свой развернутый цикл самостоятельно:

lw $s0, $t0
addi $t0, $t0, 4
lw $s1, $t0
...

Переставьте вещи, чтобы минимизировать задержки, но это примерно так же хорошо, как вы собираетесь получить.

...