Anteprima
Vedrai una selezione di 1 pagina su 33
Architettura degli elaboratori Pag. 1
1 su 33
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Operativo Input

• $ V0 Operazione - Richiesta: $ $4Stao Parametri: Eventuali - di, /. .. Output • SIVO $ fo Eventuale Risultato - :/ Risultato Argomenti Syscall Descrizione (( )No( )) Isaoquo . ... .. 1 Stampa Intero Intero 4 Stringa Stampa Stringa Address 5 Leggi Intero Intero $ ADDROSSBUFFER Io = 8 Leggi Stringa $0.1 CHANNUM--10 Fine Programma Lettura di un input e interruzione di un programma. .textmain: move $t0, $zero #assegno zero a $t0 e inizializzo MAX do: li $v0, 5 #imposto il valore 5 a $v0, da usare per leggere da syscall syscall #leggo l'intero da tastiera e lo imposto a $v0 seq $t1, $t0, $zero #max == 0 sgt $t2, $v0, $t0 #dato > max or $t1, $t1, $t2 #imposto a $t1 il risultato dell'or tra $t1 e $t2 beqz $t1, endIf #se $t1 è false (0) vado a endIf move $t0, $v0 #imposto a $t0 il nuovo max letto da tastiera endIf: bnez $v0, do #se $v0 != zero, ricomincio il ciclo li $v0, 1 #imposto 1 per stampare con syscall move $a0, $t0 #preparo l'argomento $a0 da stampare (max) syscall li $v0, 10

#imposto 10 per chiudere il programma con syscall

syscallsyscall VETTORI E MATRICI

VETTORESEQUENZA ELEMENTI MEMORIA

DI UGUALI CONSECUTIVI

DIMENSIONI

DI INNXDIM

INDICIZZATI TOTALE

0 N DIMENSIONE

DA ELEMENTO1A =- ., USANDO

POSSONO DATANE

LLA ZONA

DEFINITI STATICAMENTE

ESSERE •PRIMO ELEMENTO

l'PER UNA INDICARE

ETICHETTA DEL

INDIRIZZO

DEL VETTORE

PER L'INDIRIZZARE È AGGIUNGERE

ELEMENTO ESIMO NECESSARIO

1-L' XD MOFFSET / ELEMENTO

I _( )BYTE

VETTORE 255

ADA 0

DI valori INTERI

LABEL 1,213,4

BYTE: < )(

VETTORE DI CARATTERI BYTE

INTESTO SEGUITI 0

DA" "LABEL ASCIIZ STRINGA! . (

VETTORE BIT

WORD NUMERI BYTE

I4CODIFICATI32DI A In( )b

415,6 BYTE

4LABEL DA

ELEMENTI}1,2

WORD: ,,• (100 /

VALORE

LABEL WORD ELEMENTI DI

100:O: O•I BYTE POSSONO

DELLE DUE MODI

INWORD ESSERE CODIFICATI : )BIG

(( ) LSBSIGNIFICATIVE

LESSSIGNIFICATIVE BYTE

MSBENDIAN NOSTDAL BYTE AL• :-LITTLE

LSBDAL MSBENDIAN Ali :-

ACCESSO AGLI PER INDICE

ELEMENTI ( )i

INDIRIZZO

INDIRIZZO DELL' i DIM

ELEMENTO DEL ELEMENTO

VETTORE= + ✗

-ESEMPIO$-10 INDICE ELEMENTO=$17 VETTOREINDIRIZZO=tz$ INDIRIZZO ELEMENTO= (#$17,2 )tl$ $10SHIFTOSU DISINISTRA moltiplico2 BITA n✗,Siti triste$ADD , _SE PUÒMEMORIA FARESIVETTOREIL INE :, (#$17,2 )tl$ $10SHIFTOSLL DISINISTRA moltiplico2 BITA n✗,$50 / )$17LW LABEL VETTORE,SOMMA VETTOREUN 3DEGLI DIVISIBILECON INDICEELEMENTI ✗DI(MATRICI )VETTORI DI VETTORI 'UNA NUNA SUCCESSIONENXMMATRICE COMPOSTIDiE VETTORI DAM ELEMENTI 'IL NimENUMERO TOTALE ELEMENTIDI 'LA NXNHDIMDIMENSIONE ELEMENTIBYTEIN E _ CONTENENTELA DEFINISCE ELEMENTIUN VETTORECOMESTATICAMENTESI NXM( 13×7191MATRICE WORD :O MATRICE: < (SOMMA )DELLA DIAGONALE INEFFICIENTE(SOMMA EFFICIENTE )DIAGONALEFARE ESERCIZIO A FINE LEZIONE 4 (SOMMA DIAGONALI DELLE MATRICI) SOLUZIONEINIZIO LEZIONE 5 FUNZIONI PROCEDUREEFUNZIONEFRAMMENTO RICEVE DEGLICODICE UN CALCOLOCHEDI ARGOMENTI E SVOLGECHIAMARE FUNZIONEUNA )JAL (FUNZIONEETICHETTA JUMP AND LINK( l'SIRA DELL'RICORDA )REGISTRO

Formattazione del testo
ISTRUZIONE INDIRIZZO RETURN NEL ADDRESS L' FUNZIONE SUCCESSIVA INIZIARE CAMBIA PC DELL' ESECUZIONE POI IL PER, L' TORNARE ESECUZIONE PROGRAMMA CONTINUARE E DEL($JR ) REGISTER JUMP TO Ra PASSARE FUNZIONE ALLA E RITORNARE VALORI $0$ SIRO Star PER 324 SI PASSARE REGISTRI BIT Valori USANO I a}@ <, , ,64O BIT2 A $ $SI V0 Valori USANO REGISTRI V1 RITORNARE BIT PER I 2 32a,64O BIT1 A PRESERVARE CONTENUTO DEI REGISTRI IL PRESO CONVIENE FUNZIONERVARE CONTENUTO PRECEDENTE REGISTRI DALLA IL USATI DEI . PER FARLO UNA SICREA STACK SI SI INVETTORE CUI REALIZZA UN TIENE: (SI SPL' ) INDIRIZZO DELL' STACK ULTIMO POINTER ELEMENTO NEL REGISTRO OCCUPATO (SALVARE ) PUSH UN ELEMENTO $ /1) SI 4 DECREMENTA DELL' ELEMENTO SP UNA WORD /LO DELLA BYTE DI SOLITO DIMENSIONE , SI SP $8,4 SUBI- ,2) )/L' $SI ONE LLAmemorizza POSIZIONE ELEMENTO SpSWSIRA )01$- so, (RECUPERARE ) pop ELEMENTO UN 1) )L' SI LEGGE ELEMENTO POSIZIONE ALLA O SPLWSIRA )OISISP- , ISSP2) SI DELL' ELEMENTO LO INCREMENTA DELLA DIMENSIONE ISSP $ 4 ADDI- so ,, USO
DELLA FUNZIONE UNASTACK IN:
  1. ALL'INIZIO DELLA FUNZIONE:
    • <STACKALLOCARE SU WORD>
    • <ABBASTANZA NECESSARI>
    • <PRESERVARE REGISTRI PER I$50,12>
    • <ISSPSUBI- , ( )>
    • <SALVARE STACK TENERE DELL' OFFSET REGISTRI>
    • <SU I CONTO)OlslsoSW Stra- , )41$50$00su- / 81$81$01SW- ,>
  2. ALLA FUNZIONE DI USCITA:
    • <RIPRISTINARE DIAGLI OFFSET STESSI REGISTRI DA PRIMA SALVATI>
    • <ISTACK ,)/straLW Slsp- 0, 41$81Stao- LW , Hsistailw- b.,>
    • <DISALLOCARE PRECEDENZA SPAZIO' LO INALLOCATO$$ 12ADDI- SP so ,,>
    • <TORNARE CHIAMANTE FUNZIONE ALLA JRSIRA-RECORD DI ATTIVAZIONE>
    • <LA PER STACK ANCHE USATA E : $00 $04COMUNICARE REGISTRI 4ULTERIORI ARGOMENTI OLTRE I, . . .>
    • <COMUNICARE ULTERIORI REGISTRI RISULTATI OLTRE V1V0i ,,>
  3. ALLOCARE VARIABILI LOCALI ALLA PROCEDURA:
    • <ACTIVATION QUESTO STACK STACKFRAME SULLA RECORD BLOCCO VIENE ALLOCATOo SUBITO PRIMA CHIAMATA EDELLA VIENE DOPO ALLA FUNZIONE RILASCIATOLO l'STACK INDICIZZARE VARIA POINTER QUINDI ESECUZIONE CONVIENE FUNZIONE DELLA DURANTE , DATI PUNTA FRAME POINTER I DEL>
Il testo formattato con i tag HTML corretti sarebbe il seguente:

FRAME PUNTATORE CHEFISSOUN ILCON : ,( )SIFPRECORDALL' ATTIVAZIONEDELINIZIO DI K1( ARGOMENTI ERISULTATI" " " " :EEISFP FP CHIAMANTESISP REGISTRI SALVATIVARIABILI LOCALIRICORSIVEFUNZIONIDEFINIZIONEUNA ANCHERICORSIVASI CHIAMAFUNZIONE DICE QUANDO STESSA INDIRETTAMENTESE , .VIENE PROBLEMI 'UTILIZZATA PICCOLIRISOLVERE COMPLESSI PROBLEMIRIDUCENDOLIPER In PIUESEMPIO FATTORIALEFUNZIONE: ÈIL FATTORIALE NDI 1UN I NUMERIDIINTERO TUTTIILNUMERO PRODOTTO DA NAFATTORIALEBASECASO 1=1: DI- RIDUZIONE N1DEL -1PRIMA DA a- MOLTIPLICOproblema NumeriI;SOLUZIONE QUANTOFINALE MOLTIPLICO PRIMA PER N- :IMPLEMENTAZIONE ITERATIVA

#a0 = Nfattoriale:
li $v0, 1
# risultato = 1
ciclo:
blez $a0, fine
# se N <= 0 esc
omul $v0, $v0, $a0
# risultato * N
sub $a0, $a0, 1
# N - 1
j ciclo
fine:
jr $ra
# esco dalla funzione
IMPLEMENTAZIONE RICORSIVA
#a0 = Nfattoriale_ricorsivo:
blez $a0, caso_base
# se N <= 0 siamo nel caso base
subi $sp, $sp, 8
# alloco due word sulla stack
sw $ra,
0($sp) # salvo $rasw $a0, 4($sp) # salvo $a0
sub $a0, $a0, 1 # N -1
jal fattoriale_ricorsivo # calcolo di fattoriale (N -1)
lw $ra, 0($sp) # ripristino $ra
lw $a0, 4($sp) # ripristino $a0
addi $sp, $sp, 8 # disalloco due word dalla stack
mul $v0, $v0, $a0 # risultato * N
jr $ra

caso_base:
li $v0, 1 # risultato = 1
jr $ra

ESERCIZIO MASSIMO COMUNE DIVISORE RICORSIVO: GESTIRE BASE CASO

  1. ESEGUIRE IL CODICE NECESSARIO
  2. SALTA JR ALLA SUCCESSIVA ISTRUZIONE
  3. GESTIRE IL CASO RICORSIVO
    1. ALLOCARE MEMORIA NELLO STACK
    2. SALVARE I REGISTRI
    3. ESEGUIRE IL CODICE NECESSARIO
    4. RICHIAMARE JAL ALLA PARTENZA DELLA FUNZIONE
    5. LIBERARE E USCIRE DALLO STACK
  4. CASO BASE: (3° CASO)
  5. ESCI

ESEMPIO GCD: -15, 4 = 45

GRAFICO X: -7 = 15

Y: 15 = 4 = 3° caso

Y = GCD

ESEMPIO -15, 4 = 45

in errore( l'ultimo $ra eseguito punterà ad un indirizzo non valido, utilizzando il JAL nel main sifornisce un ultimo $

Dettagli
Publisher
A.A. 2021-2022
33 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher tiziano.max di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof Sterbini Andrea.