2013-04-08 3 views
2

Итак, мне нужно преобразовать следующий сегмент кода C в сборку MIPS.преобразование кода C в язык сборки MIPS с массивами

е = к + А [5]

вопрос мне подсказывает, что F хранится в регистре $ s3, к в $ s2 и базовый адрес массива А составляет $ s4. Это то, что я кладу в мой ответ:

добавить $ s3, $ s2, $ s4

Правильно ли это? Нужно ли мне что-то делать с 5 в массиве? Я очень новичок в MIPS, поэтому любая помощь поможет, если ОЧЕНЬ высоко ценится.

+2

«преобразование кода C в MIPS» - [. Вся семья компьютерных программ предназначена для выполнения этой задачи] (http://en.wikipedia.org/wiki/Compiler) – 2013-04-08 19:47:02

ответ

1

Вы работаете над этим для домашней работы? Если да, вы фактически пишете исполняемую программу или просто отвечаете на список вопросов?

В любом случае да, вам нужно учитывать 5 в массиве. Вопрос заключается в том, что $s4 указывает на базовый адрес массива, а не 5-й индекс.

Подсказка: A [0] будет на том же адресе, что и основание массива.

+5

домашняя метка устарела – wazy

+0

@wazy спасибо за головы. Я заметил, что ничего не получилось, когда я пошел искать, но ничего не нашел. Есть ли новый тег для вопросов типа домашнего задания или SO, поддерживающий только раздачу hw ответов в эти дни? – Mercurybullet

+0

Для всех, кого это интересует, я нашел [эту ссылку] (http://meta.stackexchange.com/questions/10811/how-to-ask-and-answer-homework-questions/10812#10812) по мета. Действительно, тег 'homework' устарел. Редактирование моего ответа, чтобы более вежливо спросить, является ли вопрос домашним заданием, но все же только направляется на правильный ответ. – Mercurybullet

0

Попробуйте это. (С верхней части моей головы). Помните, каждый индекс * 4.

li $t2, 6   # init 6 to $t2 
addi $t2, $t2, $t2 # $t2 * 2 
addi $t2, $t2, $t2 # $t2 * 2 
addi $t1, $t2, $s4 # A[6 * 4] 
lw $t4, 0($t1)  # load A[6] int $t4 
addi $s3, $s2, $t4 # obtain f 
Смежные вопросы