#mips
#mips
Вопрос:
Я работаю над своим домашним заданием, и один из вопросов, который у меня возникает, заключается в том, чтобы декодировать 0x8008FFC0 в инструкции на языке ассемблера MIPS и написать тип инструкции. 0x8008FFC0 преобразуется в 1000 0000 0000 1000 1111 1111 1100 0000, а инструкция 100000 равна фунту. Я смотрю на справочные данные MIPS. «зеленый лист»‘, и я не вижу его в списке «Основной набор инструкций». Так есть ли у него вообще тип инструкции? Если это так, почему?
Спасибо
Комментарии:
1. это
lb $8, -64($0)
, как вы можете видеть здесь , и по сути это инструкция I-типа
Ответ №1:
В процессоре MIPS есть три типа команд: R, I и J.
В процессоре MIPS инструкции R-типа имеют код операции 000000, поэтому эта инструкция не может быть инструкцией R-типа.
Инструкции типа J перемещают компьютер и имеют формат [код операции] [цель]. lb не перемещает нас и не имеет такого формата, поэтому это не может быть J.
Единственный оставшийся вариант — это I, а lb имеет формат [код операции] [src] [dest] [немедленный], как вы можете видеть здесь, так что это инструкция типа I .
Надеюсь, это поможет.
Предполагая, что вы имеете в виду этот зеленый лист. Вы смотрите на таблицу на первой странице с надписью «основной набор инструкций», в ней перечислены несколько инструкций load x, и все они I-типа, поэтому разумно предположить, что lb также будет I-типа. (в частности, байт загрузки без знака должен иметь тот же тип инструкции, что и байт загрузки.)
Или, если вы знаете, как использовать инструкцию, я думаю, что это смещение lb $ t ($ s), вы можете видеть, что оно ссылается на два регистра ($ s и $ t) и непосредственное значение (смещение). И из этого вы можете видеть, что это я печатаю.
Что касается ваших вопросов о коде операции и коде функции. Код операции — это первые шесть битов инструкции, это первое, на что смотрит компьютер, чтобы решить, что делать. Поскольку это шесть бит, существует 64 возможных значения. Этого достаточно, чтобы однозначно идентифицировать каждую инструкцию I- и J-типа, но для увеличения количества доступных инструкций инструкции R-типа идентифицируются немного по-другому. Каждая инструкция типа R имеет код операции 000000, и компьютер разделяет их по последним 5 битам, называемым кодом функции.
Комментарии:
1. Спасибо за ваш ответ. Далее, мой вопрос будет заключаться в том, как я мог бы сделать это с «Зеленым листом». Я не смогу принять ничего другого. Можете ли вы объяснить MIPSopcode(31:26) (1) MIPSfunct(5:0)(2) MIPSfunct(5: 0)?