MIPS - это архитектура набора команд RISC (ISA). Он обычно используется во встроенных устройствах, таких как телеприставки и сетевое оборудование. Многие классы компьютерной архитектуры университетского уровня используют MIPS ISA из-за его относительной простоты.

MIPS - это распространенный RISC (компьютер с сокращенным набором команд) ISA (архитектура набора команд), один из первых в своем роде. В настоящее время MIPS может относиться как к аппаратной реализации ISA, так и к самому языку ассемблера. MIPS тег применим к обоим, хотя большинство вопросов, вероятно, связаны с языком ассемблера. Первоначально MIPS расшифровывалось как "Микропроцессор без взаимосвязанных этапов конвейера", хотя современные реализации MIPS теперь имеют этапы взаимосвязанного конвейера.

Процессоры MIPS имеют две разновидности порядка байтов: и обратный, и прямой порядок байтов (часто называемыйmipsel), поэтому было бы полезно применить один из этих тегов. Многие распространенные современные процессоры типа "система на кристалле", работающие под управлением Linux и часто встречающиеся в таких устройствах, как потребительские маршрутизаторы / устройства Wi-Fi, IP-камеры и другие встроенные системы, используют архитектуру MIPS, включая многие Broadcom, Atheros и Ralink SOC.

Обзор:

  • Обзор Википедии: история, семейства процессоров, формат инструкций, соглашения об использовании регистров
  • Архитектура MIPS 32: обзор производителя и ссылки на справочные руководства
  • Архитектура MIPS 64: то же самое для 64-битных процессоров (на панели навигации есть ссылки для microMIPS, DSP ASE, MT, SmartMIPS, MIPS16, MIPS-3D, MCU ASE)

Ссылки на наборы инструкций:

  • Архитектура MIPS32™ для программистов Том II: Набор инструкций MIPS32™ - это название документа, в котором перечислены и описаны все инструкции в наборе инструкций MIPS32 вместе с их кодировками. Его можно найти по ссылке на архитектуру MIPS 32 выше или через поисковую систему.

  • Архитектура MIPS64™ для программистов Том II: Набор инструкций MIPS64™ - это название того же документа для набора инструкций MIPS64.

  • (отсутствуют некоторые инструкции) Классический набор инструкций MIPS I (не включая псевдо-инструкции); включает машинное кодирование и перечисляет ширину непосредственных операндов. Отсутствует хотя бы инструкция NOR, не знаю, что еще. (TODO: найдите краткий справочник, который включает все инструкции, не относящиеся к псевдо-MIPS I.)

  • Руководство по MIPS R3000 (MIPS II) от 1994 года. Глава 9 включает в себя таблицу набора инструкций (включая расширения для псевдо-инструкций) и синтаксис C для того, что она делает. Удобно видеть последовательности дляabs а также neg, а также какие инструкции являются настоящими машинными инструкциями.
  • См. Раздел "Запуск MIPS", особенно главу 8. Полное руководство по набору инструкций MIPS. Таблица 8.6 содержит кодировки и время введения каждой инструкции. (MIPS II, III, IV и некоторые специальные инструкции для конкретных микросхем MIPS.) Включает инструкции обслуживания TLB, инструкции вероятности ветвления MIPS II (слот задержки перехода NOP, если он не используется) и инструкции FP. Это настоящая книга, поэтому в ней есть целые разделы, объясняющие, как использовать / как это работает / почему это имеет смысл для таких вещей, как инструкции unaligned-load. Но, похоже, у него нет MIPS32 или чего-то более нового, чем MIPS IV.

Запуск / отладка кода сборки MIPS:

Курсы университетов / колледжей, которые включают программирование на языке ассемблера MIPS, часто используют симуляторы MIPS, такие как spim или mars-simulator, чтобы студенты могли запускать свои программы. Эти симуляторы включают в себя функции отладки, такие как пошаговое выполнение, точки останова и средства просмотра регистра / памяти, которые помогают разработчикам понять поведение своего кода во время выполнения.

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