Pregunta

¿Alguien conoce un sitio web donde pueda encontrar una lista de instrucciones/códigos de operación MIPS de 32 bits, con las siguientes características:

  • Distingue claramente entre códigos de operación reales y macros en lenguaje ensamblador.
  • Describe el comportamiento de la instrucción, incluidas las diferencias según el nivel de privilegio.
  • Indica en qué revisión del conjunto de instrucciones se introdujo/revisó la instrucción (p. ej.MIPS I, MIPS II, MIPS32, etc.)
  • Incluye instrucciones privilegiadas como syscall.

Conozco numerosos sitios web que documentan "parte del" conjunto de instrucciones, principalmente con fines didácticos.Tienden a omitir o describir solo parcialmente instrucciones privilegiadas y de punto flotante.

En caso de que se lo pregunte, estoy mirando el código Verilog para un subconjunto de procesadores MIPS y tratando de determinar exactamente hasta qué punto cumple con los conjuntos de instrucciones de cualquier procesador MIPS real.Gracias por cualquier consejo.

¿Fue útil?

Solución

Solo puedo responder parcialmente la pregunta: recomendaría Ver MIPS Run por Dominic Sweetman, si aún no te estás refiriendo a él. Tengo la primera edición del libro, la segunda edición ya está actualizada.

  • la tabla 8.2 enumera cada código de operación y comportamiento esperado, diferenciando macros de ensamblador y enumerando las instrucciones a las que se descomponen. Lamentablemente, no diferencia el modo usuario frente al modo kernel.
  • la tabla 8.6 enumera el nivel ISA donde se introdujo cada instrucción, incluidas variantes oscuras como LSI MiniRISC
  • syscall está presente en la tabla, aunque carece de mucha descripción

La primera edición menciona el núcleo. supervisor, y niveles de privilegio de usuario pero no discute qué operaciones están permitidas en cada uno. No sé qué cambios se hicieron en la segunda edición.

Otros consejos

¡Bien, encontré algo!

MIPS ofrece un conjunto de & "; MIPS 32 manuales de referencia &"; que se refieren al último conjunto de instrucciones estandarizadas (MIPS32v2): aquí

Estos incluyen casi todo, excepto la información sobre la versión en la que se originaron las instrucciones :-(

ESPERE UNA SEC ...

Este sitio web de clase en Cornell incluye enlaces a lo que aparece para ser el mismo manual, pero de hecho es una versión anterior y volumen 2 de esa versión anterior de hecho incluye información sobre cuándo se introdujeron las instrucciones por primera vez. Woohoo!

¿Por qué MIPS eliminaría esta información de la documentación revisada? No parece haber ninguna explicación en el historial de revisiones.

No incluye descripciones de instrucciones, pero la fuente del ensamblador GNU es probablemente tan detallada como pueda obtener con respecto a qué instrucciones están disponibles en qué CPU específicas.

Obtenga binutils y mire opcodes / mips - *. c

El manual de referencia del conjunto de instrucciones actual está gratuito en línea: Arquitectura MIPS® para programadores Volumen II-A:El manual de establecimiento de instrucciones MIPS32®.Ese enlace es la revisión 6.06 15 de diciembre de 2016.(es decir.se documenta MIPS32 versión 6).

Documenta todas las instrucciones de usuario y supervisor/modo kernel, y todas las de punto flotante, con todo detalle, incluida su codificación de código de máquina, y con una sección de Operación que muestra lo que hacen.Todavía documenta todas las instrucciones que se eliminaron en MIPS32 versión 6.(MIPS32 Release 6 también movió muchos códigos de operación, y esto está bien documentado).


Ver https://www.mips.com/products/architectures/mips32/ para la última versión.mips.com tiene una sección para "núcleos clásicos", pero todavía parece que solo se remonta a MIPS32, no a cosas históricas.


Ejemplo de la sección "disponibilidad y compatibilidad" para balc (Sucursal y Enlace Compacto:No hay ranura de retardo de rama, y ​​GRP31 es el destino implícito, liberando 26 bits para un offset<<2):

Esta instrucción se introduce y es obligatoria a partir de la versión 6.Instrucción de la versión 6 BALC Ocupa la misma codificación que la instrucción previa al lanzamiento 6 SWC2.El SWC2 La instrucción se ha trasladado a la COP2código de operación principal en MIPS versión 6

O por LDXC1 fd, index(base) (Cargar palabra doble indexada en coma flotante)

Esta instrucción se eliminó en la versión 6.Requerido en todas las versiones de MIPS64 desde MIPS64 versión 1.No disponible en MIPS32 Versión 1.Requerido en MIPS32 Release 2 y todas las versiones posteriores de MIPS32.Cuando sea necesario, se requiere cada vez que la FPU esté presente, ya sea una FPU de 32 bits o 64 bits, ya sea en modo de registro FP de 32 o 64 bits (FIRF64 = 0 o 1, statusfr = 0 o 1).


Para cosas históricas, encontré el MIPS IV REVISIÓN DE INSTRUCCIONES 3.2 SEPTIEMBRE, 1995 en una página web cmu.edu.Enumera cuándo se introdujeron las instrucciones, p.MIPS I para div, MIPS III para dmult y otras instrucciones de 64 bits, MIPS II para ll / sc.

Este sitio web describe la instrucción MIPS conjunto y su codificación. Sin embargo, no creo que esté completo.

El MIPS el sitio web también tiene documentos técnicos sobre los distintos núcleos.
Por ejemplo, descargué el manual para el núcleo MIPS 4KE (documento # MD00103) & Quot; MIPS32 & # 174; 4KE & # 8482; Procesador Core Family Software User & # 8217; s Manual & Quot; y el capítulo 10 contiene una descripción detallada del Conjunto de instrucciones. Tenga en cuenta que debe registrarse para acceder a los documentos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top