MIPS BNE Преобразование машинного кода

Я пытаюсь преобразовать около 25 строк программы MIPS из машинного кода в инструкции.

Когда я конвертирую машинный код 0x1620fff9, это дает следующее: 000101 10001 00000 1111 1111 1111 1001

Я понимаю, что это I-формат, и инструкция BNE с целевым регистром $17 и источник $0Тем не менее, непосредственный адрес - это то, что я запутался.

Как 1111 1111 1111 1001 число со знаком, дополнение к его двум дает результат -7, Я просто не знаю, что делать с таким результатом. Симулятору MARS нужна метка для того, куда он должен переходить, но мне неясно, что делать. Программа, которую я конвертирую, имеет только основную функцию и функцию печати.

Спасибо

1 ответ

Решение

Получается, что MARS и QTSpim по-разному обрабатывают эти инструкции:

  • MARS всегда выпрыгивает из инструкции после инструкции ветвления, что и должно делать конвейерная машина;

  • QtSPIM прыгает из инструкции перехода, что проще для понимания.

  • В MARS инструкция bne - 0x1620fff8, а в QtSPIM - 0x1620fff9.

Наш профессор пошел на уступки за разные результаты, но я подумал, что это может пригодиться кому-то в будущем.

Другие вопросы по тегам