Question

Est-ce que quelqu'un connaît un site Web sur lequel je peux trouver une liste d'instructions / d'opcodes MIPS 32 bits, avec les caractéristiques suivantes:

  • Distingue clairement les opcodes réels et les macros en langage assembleur
  • Décrit le comportement des instructions, y compris les différences en fonction du niveau de privilège.
  • Indique dans quelle révision du jeu d'instructions l'instruction a été introduite / révisée (par exemple, MIPS I, MIPS II, MIPS32, etc.)
  • Inclut des instructions privilégiées telles que syscall.

Je connais de nombreux sites Web documentant " une partie de " l'ensemble d'instructions, principalement à des fins d'enseignement. Ils ont tendance à omettre ou à ne décrire que partiellement les instructions en virgule flottante et privilégiées.

Au cas où vous vous le demanderiez, je regarde le code Verilog pour un sous-ensemble de processeurs MIPS et tente de déterminer dans quelle mesure il est conforme aux jeux d'instructions de tous les processeurs MIPS réels! Merci pour tous les conseils.

Était-ce utile?

La solution

Je ne peux que partiellement répondre à la question: je vous recommanderais Voir la série de tests MIPS de Dominic Sweetman, si vous n'y parlez pas déjà. J'ai la première édition du livre, la deuxième édition est maintenant à jour.

  • Le tableau 8.2 répertorie chaque code opération et comportement attendu, différenciant les macros d'assembleur et répertoriant les instructions pour lesquelles ils se décomposent. Malheureusement, cela ne différencie pas le mode utilisateur du mode noyau.
  • Le tableau 8.6 répertorie le niveau ISA dans lequel chaque instruction a été introduite, y compris des variantes obscures telles que le LSI MiniRISC
  • syscall est présent dans le tableau, mais il manque beaucoup de description

La première édition mentionne le noyau. superviseur et les niveaux de privilège utilisateur, mais ne décrit pas les opérations autorisées dans chacun. Je ne sais pas quelles modifications ont été apportées à la deuxième édition.

Autres conseils

D'accord, j'ai trouvé quelque chose!

MIPS propose un ensemble de " manuels de référence MIPS 32 " qui font référence au dernier jeu d'instructions normalisé (MIPS32v2): ici

Celles-ci incluent à peu près tout, à l'exception des informations sur la version d'origine des instructions: - (

WAIT A SEC ...

Le site Web de cette classe chez Cornell contient des liens vers les éléments affichés doit être le même manuel, mais il s'agit en fait d'une version plus ancienne et le volume 2 de cette ancienne version inclut en fait des informations sur le moment où les instructions ont été introduites pour la première fois. Woohoo!

Pourquoi MIPS supprimerait-il ces informations de la documentation révisée? Il ne semble y avoir aucune explication dans l'historique des révisions.

N'inclut pas les descriptions d'instructions, mais la source de l'assembleur GNU est probablement aussi détaillée que possible pour ce qui est des instructions disponibles sur quels processeurs spécifiques.

Obtenez binutils et examinez les opcodes / mips - *. c

Le manuel de référence actuel sur le jeu d'instructions est gratuit en ligne: MIPS & # 174; Architecture pour les programmeurs Volume II-A: Le MIPS32 & # 174; Instruction Régler Manuel . Ce lien est la révision 6.06 15 décembre 2016. (c’est-à-dire qu'il documente la MIPS32 version 6 ).

Il documente toutes les instructions en mode utilisateur et superviseur / noyau, ainsi que toutes les instructions en virgule flottante, avec tous les détails, y compris le codage de leur code machine, ainsi qu’une section Opération indiquant ce qu’elles font. Il documente toujours toutes les instructions qui ont été supprimées dans MIPS32 version 6. (MIPS32 version 6 a également déplacé de nombreux opcodes, ce qui est bien documenté).

Voir https://www.mips.com/products/architectures/mips32/ / a> pour la dernière version. Mips.com a une section pour les & "Coeurs classiques &"; mais cela ne semble toujours revenir qu'à MIPS32, pas à des éléments historiques.

Exemple de " disponibilité et compatibilité " section pour balc (Branch and Link Compact: pas d’intervalle de retard de branche, et GRP31 est la destination implicite, libérant 26 bits pour un offset<<2):

  

Cette instruction est introduite et requise à partir de la version 6.   L'instruction Release 6 BALC occupe le même encodage que la pré-release 6   instruction SWC2. L'instruction COP2 a été déplacée vers le LDXC1 fd, index(base)   opcode majeur dans MIPS version 6

Ou pour div (charger un mot double indexé en virgule flottante)

  

Cette instruction a été supprimée de la version 6.   Requis dans toutes les versions de MIPS64 depuis MIPS64 version 1. Non disponible dans MIPS32 version 1. Requis dans   MIPS32 Release 2 et toutes les versions ultérieures de MIPS32. Lorsque requis, requis lorsque la FPU est présente,   FPU 32 bits ou 64 bits, en mode Registre FP 32 bits ou 64 bits (FIRF64 = 0 ou 1, StatusFR = 0 ou 1).

En ce qui concerne l'historique, j'ai trouvé le Jeu d'instructions MIPS IV Révision 3.2 Septembre 1995 sur une page Web cmu.edu. Il répertorie les instructions lorsque des instructions ont été introduites, MIPS I pour dmult, MIPS III pour ll et autres instructions 64 bits, MIPS II pour sc / <=>.

scroll top