Нужно ли загружать из памяти базовый адрес массива во временный регистр в этом коде MIPS? - PullRequest
1 голос
/ 20 апреля 2019

Я работаю над домашним заданием, и мне нужно перевести код c в MIPS (32-разрядная версия).

Я могу использовать 3 регистра $s0 для переменной x, '$ s1' для переменной y и $ s3 для базового адреса массива 'A []'.

Моя цель - иметь возможность выполнить некоторую условную логику if, которая сравнивает определенный индекс массива 'A' с переменной 'y' (в данном случае A[x] < y)

мой код:

sll $t0, $s0,2 # t0 = x *4

add $t0,$t0,$s3 # t0 = x*4 + &A[0] = A[x]

Мой вопрос: регистр $ t0 уже указывает на адрес памяти 'A [x]', поэтому я могу двигаться вперед с тем, что у меня есть, и начать сравнивать значения:

slt $t1,$t0,$s1 # if A[x] < y then $t1 = 1

или мне нужно загрузить слово из памяти, используя псевдоинструкцию 'lw' в начале моего кода:

lw $t0, 0($s3) #temp reg $t0 gets A[0]

sll $t1, $s0,2 # t0 = x *4

add $t0,$t1,$t0 # t0 = x*4 + &A[0] = A[x]

rest of code goes here

1 Ответ

2 голосов
/ 20 апреля 2019

Ваш $ t0 будет содержать ячейку памяти, в которой хранится A [x].

"действительно ли регистр $ t0 уже указывает на адрес памяти 'A [x]', поэтому я могу двигаться вперед с тем, чтоЯ до сих пор и начинаю сравнивать значения: "

Да, вы правы, что $ t0 указывает на адрес памяти 'A [x]'.Но вы еще не можете сравнить, потому что у вас есть адрес, где хранится A [x], а НЕ значение AT по этому адресу.Поэтому вам нужно выполнить инструкцию загрузки слова.

"Мне нужно загрузить слово из памяти, используя псевдоинструкцию 'lw' в начале моего кода:« Вы правы, что вам нужно загрузить слово изобъем памяти.Помните, что $ t0 имеет ваш интересующий адрес, который вы хотите загрузить из памяти.($ t0 = адрес A [x])

Вы можете сделать это:

lw $t0, 0($t0) # temp reg. $t0 gets A[x]

Затем вы можете сделать сравнение.

Примечание: Напомним, что регистрыотдельно от памяти.Для сравнения значений из регистров и значений из памяти необходимо использовать lw с соответствующим адресом для переноса значения из памяти в определенный регистр.

...