Где я могу найти описание * всех * инструкций 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 содержится подробное описание набора инструкций.
Обратите внимание, что вам необходимо зарегистрироваться для доступа к документам.