MIPS 0x8008FFC0 нет типа инструкции?

#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)?