Проблема в значениях регистров - PullRequest
0 голосов
/ 09 августа 2011

Я пытался решить это домашнее задание, но не смог найти решение. Ниже проблема,

Перевести этот код на машину MIPS

once_more:
    lw $5, 48($6)
    sub $5, $5, $2
    bne $5, $0, once_more

Теперь проблема, с которой я сталкиваюсь, заключается в том, что я понятия не имею, каким должно быть значение регистров в этой задаче (я изучал только значения $t0-$t7 (8-15) и $s0-$s7 (16-23)). Может ли кто-нибудь помочь мне с значениями этих регистров? Заранее спасибо.

1 Ответ

2 голосов
/ 09 августа 2011

Исходя из этого документа , я думаю, что регистры, на которые ссылаются, следующие:

  • $5 -> $a1
  • $6 -> $a2
  • $2 -> $v0

$0 - это регистр $zero.

$a- регистрирует аргументы хранения, в то время как $v1 регистрирует результаты удержания. Одна из целей этих регистров - использование системными вызовами; например, системный вызов print_int напечатает значение в $a0 как целое число.

Перевод их в машинный код будет означать, что вам нужно преобразовать оператор сборки в двоичный машинный эквивалент. MIPS Green Card поможет вам здесь. Обратитесь к разделу «Основные форматы команд» для объяснения того, как инструкции расположены в двоичном формате.

...