Domanda

Qualcuno conosce un sito Web in cui posso trovare un elenco di istruzioni / codici operativi MIPS a 32 bit, con le seguenti funzionalità:

  • Distingue chiaramente tra codici operativi reali e macro in linguaggio assembly
  • Descrive il comportamento dell'istruzione, comprese le differenze a seconda del livello di privilegio.
  • Indica in quale revisione del set di istruzioni l'istruzione è stata introdotta / rivista (ad esempio MIPS I, MIPS II, MIPS32, ecc.)
  • Include istruzioni privilegiate come syscall.

Sono a conoscenza di numerosi siti Web che documentano " parte di " il set di istruzioni, principalmente a scopo didattico. Tendono a tralasciare o descrivere solo parzialmente le istruzioni in virgola mobile e privilegiate.

Nel caso ti stia chiedendo, sto guardando il codice Verilog per un sottoinsieme di processori MIPS e sto cercando di capire esattamente fino a che punto è conforme ai set di istruzioni di qualsiasi vero processore MIPS! Grazie per eventuali suggerimenti.

È stato utile?

Soluzione

Posso solo parzialmente rispondere alla domanda: consiglierei Vedi MIPS Run di Dominic Sweetman, se non ti stai già riferendo ad esso. Ho la prima edizione del libro, la seconda edizione è ora in corso.

  • la tabella 8.2 elenca ogni codice operativo e comportamento previsto, differenziando le macro degli assemblatori e elencando le istruzioni in cui si decompongono. Sfortunatamente non differenzia la modalità utente vs kernel.
  • la tabella 8.6 elenca il livello ISA in cui è stata introdotta ciascuna istruzione, incluse varianti oscure come il LSI MiniRISC
  • syscall è presente nella tabella, sebbene non abbia molta descrizione

La prima edizione menziona il kernel. supervisore e livelli di privilegi dell'utente, ma non discute quali operazioni sono consentite in ciascuno. Non so quali modifiche siano state apportate nella seconda edizione.

Altri suggerimenti

Okay, ho trovato qualcosa!

MIPS offre una serie di " MIPS 32 manuali di riferimento " che si riferiscono all'ultimo set di istruzioni standardizzato (MIPS32v2): qui

Questi includono quasi tutto, tranne le informazioni su quale versione sono originate le istruzioni :-(

ASPETTA UNA SEC ...

Questo sito web di classe su Cornell include collegamenti a ciò che appare essere lo stesso manuale, ma in realtà è una versione precedente e volume 2 di quella versione precedente include in realtà informazioni su quando sono state introdotte le istruzioni. Woohoo!

Perché i MIPS dovrebbero rimuovere queste informazioni dalla documentazione rivista? Non sembra esserci alcuna spiegazione nella cronologia delle revisioni.

Non include le descrizioni delle istruzioni, ma l'origine dell'assemblatore GNU è probabilmente il più dettagliato possibile per quanto riguarda quali istruzioni sono disponibili su quali CPU specifiche.

Ottieni binutils e guarda i codici operativi / mips - *. c

L'attuale manuale di riferimento del set di istruzioni è gratuito online: MIPS & # 174; Architettura per programmatori Volume II-A: MIPS32 & # 174; istruzione Imposta manuale . Tale collegamento è la revisione 6.06 15 dicembre 2016. (ovvero documenta MIPS32 Release 6 ).

Documenta tutte le istruzioni per la modalità utente e supervisore / kernel e tutti in virgola mobile, in dettaglio, inclusa la codifica del codice macchina, e con una sezione Operazione che mostra cosa fanno. Documenta ancora tutte le istruzioni che sono state rimosse in MIPS32 versione 6. (Anche MIPS32 versione 6 ha spostato molti codici operativi, e questo è ben documentato).


Vedi https://www.mips.com/products/architectures/mips32/ per l'ultima versione. mips.com ha una sezione per " core classici " ;, ma sembra ancora risalire solo a MIPS32, non a cose storiche.


Esempio di " disponibilità e compatibilità " sezione per balc (Branch e Link Compact: nessuno slot di ritardo del ramo e GRP31 è la destinazione implicita, liberando 26 bit per un offset<<2):

  

Questa istruzione è stata introdotta e richiesta dalla versione 6.   L'istruzione Release 6 BALC occupa la stessa codifica della versione precedente 6   istruzione SWC2. L'istruzione COP2 è stata spostata in LDXC1 fd, index(base)   codice operativo principale in MIPS versione 6

O per div (Carica doppia parola indicizzata in virgola mobile)

  

Questa istruzione è stata rimossa nella versione 6.   Richiesto in tutte le versioni di MIPS64 dalla versione 1. MIPS64 Non disponibile nella versione MIPS32 1. Richiesto in   MIPS32 versione 2 e tutte le versioni successive di MIPS32. Quando richiesto, richiesto quando è presente FPU,   sia una FPU a 32-bit o 64-bit, sia in modalità di registrazione FP a 32-bit o 64-bit (FIRF64 = 0 o 1, StatusFR = 0 o 1).


Per cose storiche, ho trovato Set di istruzioni MIPS IV Revisione 3.2 Settembre 1995 su una pagina web cmu.edu. Elenca quando sono state introdotte le istruzioni, ad es. MIPS I per dmult, MIPS III per ll e altre istruzioni a 64 bit, MIPS II per sc / <=>.

Questo sito Web descrive le istruzioni MIPS set e la loro codifica. Non penso sia completo però.

I MIPS sito web ha anche documenti tecnici sui vari core.
Ad esempio, ho scaricato il manuale per il core MIPS 4KE (documento # MD00103) & Quot; MIPS32 & # 174; 4KE # 8482 &; Famiglia di processori Core Software utente & # 8217; s Manuale & Quot; e il capitolo 10 contiene una descrizione dettagliata del set di istruzioni. Nota che devi registrarti per accedere ai documenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top