Вопрос

Кто-нибудь знает о веб-сайте, где я могу найти список 32-разрядных инструкций / кодов операций MIPS со следующими функциями:

  • Четкое различие между реальными операционными кодами и макросами на ассемблере
  • Описывает поведение инструкции, включая различия в зависимости от уровня привилегий.
  • Указывает, в какой редакции набора команд была введена/пересмотрена инструкция (например,MIPS I, MIPS II, MIPS32 и т.д.)
  • Включает привилегированные инструкции, такие как системный вызов.

Мне известно о многочисленных веб-сайтах, которые документируют "часть" набора инструкций, в основном для учебных целей.Они, как правило, не учитывают или лишь частично описывают привилегированные инструкции с плавающей запятой.

На случай, если вам интересно, я просматриваю код Verilog для подмножества процессоров MIPS и пытаюсь точно выяснить, в какой степени он соответствует наборам команд любых реальных процессоров MIPS!Спасибо за любые подсказки.

Это было полезно?

Решение

Я могу лишь частично ответить на этот вопрос:Я бы порекомендовал Смотрите, как Запускаются MIPS автор: Доминик Свитман, если вы еще не ссылаетесь на это.У меня есть первое издание книги, сейчас вышло второе издание.

  • в таблице 8.2 перечислены каждый код операции и ожидаемое поведение, различаются макросы ассемблера и перечислены инструкции, на которые они разлагаются.К сожалению, это не делает различий между режимом пользователя и режимом ядра.
  • в таблице 8.6 приведен список уровней ISA, на которых была введена каждая инструкция, включая неясные варианты, такие как LSI MiniRISC
  • системный вызов присутствует в таблице, хотя и не содержит подробного описания

В первом издании упоминается ядро.уровни привилегий супервизора и пользователя, но не обсуждает, какие операции разрешены в каждом из них.Я не знаю, какие изменения были внесены во второе издание.

Другие советы

Ладно, я кое-что нашел!

MIPS предлагает набор "справочных руководств по MIPS 32", которые относятся к последнему стандартизированному набору инструкций (MIPS32v2).: здесь

Они включают в себя практически все, за исключением информации о том, в какой версии были созданы инструкции:-(

ПОДОЖДИ СЕКУНДУ...

Веб-сайт этого класса в Корнелле включает ссылки на то, что появляется быть тем же самым руководством, но на самом деле является более старая его версия, и том 2 эта более старая версия на самом деле содержит информацию о том, когда впервые были представлены инструкции.У-у-у!

Зачем MIPS удалять эту информацию из пересмотренной документации?Похоже, в истории изменений нет никаких объяснений.

Не содержит описаний инструкций, но исходный код ассемблера GNU, вероятно, настолько подробен, насколько вы можете получить, относительно того, какие инструкции доступны на каких конкретных процессорах.

Получить бинарные файлы и посмотрите на коды операций /mips-*.c

Действующее справочное руководство по набору инструкций доступно бесплатно в Интернете: Архитектура MIPS® для программистов Том II-A:Инструкция MIPS32® Руководство по установке.Эта ссылка относится к редакции 6.06 От 15 декабря 2016 года.(т.е.это документирует Версия 6 MIPS32).

Он документирует все инструкции пользователя и супервизора / режима ядра, а также все операции с плавающей запятой, во всех деталях, включая их кодировку в машинном коде, и с разделом операций, который показывает, что они делают.В нем по-прежнему документируются все инструкции, которые были удалены в MIPS32 release 6.(MIPS32 Release 6 также изменил множество кодов операций, и это хорошо документировано).


Видишь https://www.mips.com/products/architectures/mips32/ для последней версии.mips.com есть раздел для "классических ядер", но, похоже, он по-прежнему относится только к MIPS32, а не к историческим материалам.


Пример раздела "доступность и совместимость" для balc (Компактные ответвления и ссылки:нет слота задержки перехода, и GRP31 является неявным назначением, освобождая 26 бит для offset<<2):

Эта инструкция введена и обязательна начиная с версии 6.Инструкция по выпуску 6 BALC используется та же кодировка, что и в предварительной версии 6 инструкция SWC2.Тот Самый SWC2 инструкция была перенесена в COP2 основной код операции в MIPS версии 6

Или для LDXC1 fd, index(base) (Загрузить двойное слово, индексированное с плавающей запятой)

Эта инструкция была удалена в выпуске 6.Требуется во всех версиях MIPS64, начиная с MIPS64 Release 1.Недоступно в MIPS32 версии 1.Требуется в MIPS32 Release 2 и всех последующих версиях MIPS32.При необходимости, требуется всякий раз, когда присутствует FPU, будь то 32-разрядный или 64-разрядный FPU, будь то в 32-разрядном или 64-разрядном режиме регистра FP (FIRF64=0 или 1, StatusFR=0 или 1).


Что касается исторических материалов, то я нашел Набор инструкций MIPS IV Редакция 3.2 Сентябрь 1995 г. на веб-странице cmu.edu.В нем перечисляется, когда были введены инструкции, напримерMIPS I для div, MIPS III для dmult и другие 64-разрядные инструкции, MIPS II для ll / sc.

Это Веб-сайт описывает набор команд MIPS и их кодировку.Однако я не думаю, что это завершено.

Тот Самый MIPS на веб-сайте также есть технические документы о различных ядрах.
Например, я загрузил руководство для ядра MIPS 4KE (документ № MD00103) "Руководство пользователя программного обеспечения семейства процессорных ядер MIPS32® 4KE™", и глава 10 содержит подробное описание набора инструкций.Обратите внимание, что для доступа к документам вам необходимо зарегистрироваться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top