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

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

  • Четко различает настоящие коды операций и макросы на языке ассемблера (псевдоинструкции).
  • Describes the instruction behavior including differences depending on privilege level.
  • Indicates in which instruction set revision the instruction was introduced/revised (e.g. MIPS I, MIPS II, MIPS32, etc.)
  • Включает привилегированные инструкции, такие как системный вызов.

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

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


person Dan Lenski    schedule 25.09.2008    source источник
comment
syscall передает управление супервизору, но сам не требует привилегий для выполнения, что, конечно, важно. Я не уверен, что в MIPS IV (руководстве, которое я искал) есть какие-либо инструкции, которые всегда требуют привилегий, или, может быть, это потому, что в руководстве MIPS IV, которое я просмотрел, говорится, что оно определяет только инструкции пользовательского режима. (Но все они могут быть реализованы как операции процессора управления системой (такие же, как сопроцессор 0?), а не настоящие инструкции ЦП. Доступ к CoProc 0 из пользовательского режима зависит от другой настройки бита, по-видимому, от быстрого поиска по привилегиям.)   -  person Peter Cordes    schedule 07.01.2021


Ответы (5)


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

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

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

person DGentry    schedule 25.09.2008
comment
Спасибо, Дентон! Это лучшая книга MIPS... к сожалению, она очень востребована в университетской библиотеке :-( Надеюсь, я смогу сделать несколько фотокопий, когда смогу ее проверить. - person Dan Lenski; 26.09.2008

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

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

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

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

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

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

person Dan Lenski    schedule 25.09.2008
comment
Это круто, но имейте в виду, что MIPS32R2 не охватывает все варианты, которые были раньше. - person ; 26.09.2008
comment
Скорее всего, в надежде продать вам свой последний процессор. Чтобы затруднить использование старых процессоров. - person user3462295; 01.09.2014

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

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

person Community    schedule 25.09.2008
comment
Милая, огромное спасибо!! Это именно то, что мне нужно: sourceware.org/cgi-bin/cvsweb.cgi/src/opcodes/ Содержит подробную информацию о том, какие инструкции содержатся в каких версиях ISA. - person Dan Lenski; 26.09.2008

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

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


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


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

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

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

Эта инструкция была удалена в версии 6. Требуется во всех версиях MIPS64, начиная с версии 1 MIPS64. Недоступна в версии 1 MIPS32. Требуется в версии 2 MIPS32 и всех последующих версиях 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.


Хорошим кратким справочником по псевдокоду о действии каждой инструкции является https://inst.eecs.berkeley.edu/%7Ecs61c/resources/MIPS_help.html. Он не включает подробности кодирования, но точно описывает влияние инструкций ветвления и перехода на программный счетчик. (Что несколько сложно: они являются относительными или абсолютными по секциям для слота задержки перехода.)

Однако он не является полным даже для целочисленных инструкций MIPS I: в нем отсутствуют вспомогательные инструкции невыровненной загрузки LWL и LWR и соответствующие хранилища SWL/R, которые присутствовали в MIPS I. Он также не включает никаких материалов FP или более поздних инструкций MIPS. как mul (только mult). Я не знаю, чего еще может не хватать; Я не сравнивал его с полным списком.

Руководство MIPS-IV, указанное выше, подтверждает, что lwl/lwr были доступны в MIPS I (и документирует, что к ним применяется ограничение слота задержки загрузки).

person Peter Cordes    schedule 22.11.2017

Это веб-сайт (archive.org) описывает большую часть набора инструкций MIPS и их кодировку. Однако он неполный: отсутствует как минимум nor и, возможно, что-то еще.

Хороший краткий справочник с псевдокодом по действию каждой инструкции: https://inst.eecs.berkeley.edu/%7Ecs61c/resources/MIPS_help.html. Он не включает детали кодирования.

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

person Benoit    schedule 25.09.2008
comment
Да, к сожалению, похоже, что это описывает только ограниченное подмножество, предлагаемое симулятором SPIM. - person Dan Lenski; 26.09.2008
comment
Да, mrc.uidaho.edu/mrc/people/jff/ digital/MIPSir.html не завершен. По крайней мере, отсутствует nor, как я заметил, когда задавался вопросом, насколько эффективно MIPS выполняет ~x. И кстати, он наконец-то перешел на 404, после того как долгое время был любимым хитом Google. inst.eecs.berkeley.edu/~cs61c/resources/MIPS_help.html — хороший краткий справочник. - person Peter Cordes; 06.01.2021