Где я могу найти описание * всех * инструкций MIPS,

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

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

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

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

Ответ 1

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

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

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

Ответ 2

Хорошо, я что-то нашел!

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

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

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

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

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

Ответ 3

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

Получите binutils и посмотрите на opcodes/mips - *. c

Ответ 4

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

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


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


Пример раздела "Доступность и совместимость" для balc (Branch and Link Compact: нет гнезда задержки ветвления, а GRP31 - неявное назначение, освобождение до 26 бит для offset<<2):

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

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

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


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

Ответ 5

Этот веб-сайт описывает набор инструкций MIPS и их кодировку. Я не думаю, что это полно.

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