MIPS in latex

  • Creatore
    Topic
  • #26971
    Up
    0
    Down
    ::


    Devo fare una relazione in cui includere del codice assembly MIPS. Purtroppo questo linguaggio non è tra quelli di listings, però sarebbe stato comunque carino poterlo presentare correttamente evidenziato… ho visto che c’è il modo di definire manualmente le parole chiave e come evidenziarle, ma francamente la cosa mi pare un pò troppo onerosa. Sapete dirmi se esiste qualche soluzione alternativa in termini di pacchetti, oppure qualche estensione a listings, capace di risolvere il mio problema?

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #26972
      Up
      0
      Down
      ::


      La cosa più assurda è che latex mi legge i dollari (che in assembly indicano i registri della CPU) nel file caricato con lstinputlisting come se fossero quelli che si usano per scrivere le formule, nonostante non abbia attivato mathescape!! Inutile dire il botto di errori che ne viene fuori… mah, questa proprio l’ho da capire…

    • #26973
      Up
      0
      Down
      ::

      La cosa più assurda è che latex mi legge i dollari (che in assembly indicano i registri della CPU) nel file caricato con lstinputlisting come se fossero quelli che si usano per scrivere le formule, nonostante non abbia attivato mathescape!! Inutile dire il botto di errori che ne viene fuori… mah, questa proprio l’ho da capire…

      Non è che tutti sappiano che cosa sia MIPS: prova a fare un esempio.

      Ciao
      Enrico

    • #26974
      Up
      0
      Down
      ::


      E’ un linguaggio di programmazione Assembly: in sintesi, rispetto a quelli di alto livello come Java, C ecc.. risulta più vicino al linguaggio macchina (quest’ultimo direttamente in binario).
      Esempio:
      `
      proc_inserimento:
      addi $sp, $sp, -16 # Allocazione dello stack
      sw $ra, 0($sp) # Ci sono procedure interne, quindi esegue salvataggio
      # indirizzo di ritorno

      sw $s0, 4($sp) # $s0, $s1, $s2 verranno modificati, quindi salvali
      sw $s1, 8($sp)
      sw $s2, 12($sp)

      move $s0 $zero # $s0 (= Testa) = 0
      move $s1 $zero # $s1 (= Coda ) = 0
      move $s2 $zero # Registro che conterra' i simboli non terminali correnti
      move $s3 $zero # Flag per segnalare se alla prima produzione

      la $a0, mess_iniziale # Stampa richiesta di inserimento del simboli iniziale
      li $v0, 4
      syscall

      li $t0, 65 # Caricamento di costanti necessarie al controllo
      li $t1, 89 # sui caratteri non validi per non terminale

      li $v0, 12 # Lettura simbolo iniziale, e…
      syscall

      move $s2, $v0 # …successivo controllo della correttezza
      blt $s2, $t0, errore_parsing
      bgt $s2, $t1, errore_parsing
      `
      In ogni caso credo di aver trovato la soluzione ripiegando, almeno per stavolta, su un’esportazione del codice sorgente come file rtf… se poi esiste una risposta alla domanda di sopra è comunque gradita per futuri utilizzi.

    • #26975
      Up
      0
      Down
      ::


      Penso che non dovresti impiegare molto a creati un tuo linguaggio con listings. In fondo il mips è abbastanza semplice (come forme dei comandi intendo! io ho fatto pochissimo e non è semplicissimo 🙄 ). Però sono quasi tutti nella forma comando seguito da un certo numero di indirizzi di registri (due o tre, di più che io sappia no).

      Secondo me potresti limitarti ad evidenziare i comandi come addi, lw, sw, slt e i jump (ecc..) usando il comando morekeywords che trovi a pag.20 della documentazione del pacchetto. Evidenziare anche i registri sarebbe un po’ pesante secondo me.

Visualizzazione 3 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top