La scorsa lezione. Laboratorio di Architettura. passaggio parametri. Riassunto. Lezione 7. Procedure Convenzioni di chiamata Stack
|
|
- Sibilla Bonelli
- 5 anni fa
- Visualizzazioni
Transcript
1 La scorsa lezione Laboratorio di Architettura Lezione 7 Andrea Torsello Procedure Convenzioni di chiamata Stack Dipartimento di Informatica Università Ca Foscari di Venezia Riassunto p.1/55 p.2/55 passaggio parametri Chiamata alla procedura B tradotta attraveso jal indirizzodib l indirizzo di ritorno viene scritto in $ra la procedura ritorna con jr $ra I parametri ed i risultati si possono passare in dei registri C è bisogno di un accordo Esiste un convenzione per tutti i sistemi MIPS. p.3/55 p.4/55
2 Convenzioni di chiamata $zero: quando letto dà sempre 0 $at: riservato per l assembler (usato per le pseudoistruzioni) $v0, $v1: risultato di espressioni/funzioni $a0...$a3: primi 4 argomenti di una procedura/funzione $t0...$t7: registri temporanei, il contenuto non spravvive una chiamata di procedura $s0...$s7: registri temporanei salvati, il contenuto spravvive una chiamata di procedura $t8, $t9: altri 2 registri temporanei che non sopravvivono le procedure Convenzioni di chiamata $k0, $k1: riservati per il sistema operativo $gp, $sp, $fp: vedremo più avanti $ra: return address, scritto da jal e usato per ritornare da procedure p.5/55 p.6/55 Problema Nomi Dobbiamo evitare i side-effects dobbiamo salvare i valori prima di chiamare un altra procedura, e poi rimetterli al loro posto Per far questo, abbiamo visto un semplice metodo Ci si sceglie posticino tranquillo per noi, un indirizzo in memoria, gli si dà un nome, e si usa quello come una variabile di salvataggio p.7/55 p.8/55
3 Limitazioni? Problema dei nomi Lo spazio è usato solo quando la funzione viene chiamata Ogni funzione ha dello spazio inutilizzato per la maggior pate del tempo. Funziona sempre? No! (Funzioni ricorsive). Ora i nomi non sono più posti tranquilli e riservati per noi, visto che ci servono per fare cose diverse in situazioni diverse Per cui, salvare in delle variabili fisse non funziona nel caso in cui la procedura chiami se stessa (direttamente o indirettamente) Nomi II p.9/55 p.10/55 Sequenzialità Nomi diversi: hanno la buona proprietà che possiamo fare cose anche parallelamente: ognuno mette i suoi dati in posti diversi Però, noi in questo ambito non abbiamo processi paralleli Le operazioni che facciamo sono sempre sequenziali: prima qualcuno fa qualcosa, poi un altro fa qualcos altro, e cosi via In ogni momento, c è solo un programma attivo p.11/55 p.12/55
4 Dunque... Stack Possiamo sfruttare questo fatto per immagazzinare le nostre variabili: USIAMO UN UNICO POSTO per tutti Un posto che permette di salvare più dati LO STACK È un punto dove noi possiamo mettere e togliere dati Come un mazzo di carte: PUSH (mette una carta in cima al mazzo) POP (toglie la carta in cima al mazzo) Funziona? p.13/55 p.14/55 Perché funziona Per il senso civico Se tutti puliscono dopo che hanno fatto, non si accumula spazzatura e tutto va bene Perché in ogni momento c è solo una sola procedura che mette le carte. E spetta a lei, quando ha finito, togliere le carte che ha messo nel mazzo In questo modo, ognuno quando ha finito lascia le cose esattamente come stavano Come funziona Dobbiamo semplicemente implementare in qualche modo le istruzioni di PUSH (metti) e POP (togli) C è un registro apposito per implementare lo stack: sp (stack pointer, puntatore allo stack) p.15/55 p.16/55
5 PUSH (metti) POP (togli) PUSH(registro) mette un registro sullo stack addi $sp,$sp,-4 # fa spazio sullo stack sw registro,0($sp) # mette il registro nello # stack POP toglie il primo elemento dello stack (e lo mette da qualche parte) lw registro,0($sp) #copia il primo elemento #dello stack nel registro addi $sp,$sp,4 #libera lo stack p.17/55 Interrogativo E allora? p.18/55 Serve veramente la ricorsione?...no! Risultato fondamentale: si può sempre modificare il programma dimodoché non ci sia ricorsione Il problema è lo stesso di Mr. Minimal: a volte è molto più conveniente usare la ricorsione Senza, rischiamo che la soluzione sia molto più complicata da scrivere Inoltre, nei moderni linguaggi di programmazione, la ricorsione è molto facile da scrivere (tocca poi al linguaggio macchina fare il lavoro) p.19/55 p.20/55
6 Attenzione Esercizio A volte la ricorsione è facile da scrivere, ma molto meno efficiente di un calcolo più diretto non ricorsivo Ad esempio, i numeri di Fibonacci... F(9) = F(8) + F(7) = F(7) + F(6) + F(6) + F(5)=... Provate a scrivere un programma più efficiente per calcolare i numeri di Fibonacci che non usi la ricorsione p.21/55 p.22/55 Lo stack Lo stack Lo stack è uno spazio di memoria... privato: ogni chiamata funzione ne ha uno suo e anche se la stessa funzione viene chiamata più volte (ricorsione) questi spazi non collidono dinamico: la dimensione si adatta alle necessità (ne uso di più o di meno a seconda delle necessità) Viene usato per salvare e poi ripristinare i registri che non possono essere modificati ($s0,...,$s7,$a0,...$a3,$ra,...) Chi deve salvare i valori nello stack la procedura chiamante o quella chiamata? chi li cambia! $s0,...,$s7 devono essere salvati dalla procedura chiamata se ha intenzione di usarli La procedura chiamante deve salvare $a0,...$a3 prima di inserirvi gli argomeni e quella chiamata deve salvarli prima di modificarne il contenuto La procedura chiamante deve salvare $ra prima di eseguire la jal!!! p.23/55 p.24/55
7 Uso minimo Esempio procedura chiamante La funzione chiamata non deve salvare nulla se scrive solo nei registri temporanei ($t0,...$t9) in quelli dei risultati ($v0,$v1) in quelli non indirizzabili (Hi,Lo,PC) La funzione chiamante deve comunque salvare $ra i registri argomento usati ($a0,...$a3).data x:.word 5 result:.space 4.text main: # salvo ra e a0 # PUSH($ra) addi $sp,$sp,-4 sw $ra,0($sp) # PUSH($a0) addi $sp,$sp,-4 sw $a0,0($sp) # chiamo la procedura quadrato lw $a0,x jal quadrato sw $v0,result # ripristino ra e a0 # POP($a0) lw $a0,0($sp) addi $sp,$sp,4 # POP($ra) lw $ra,0($sp) addi $sp,$sp,4 jr $ra # return p.25/55 Esempio procedura chiamata p.26/55 salvataggio del chiamante quadrato: mult $a0,$a0 mflo $v0 jr $ra Nella maggior parte dei casi l onere del salvataggio è solo della funzione chiamante La procedura chiamante deve salvare i registri soltanto 1 volta e poi può chiamare quante procedure vuole Se le procedure chiamate dovessero salvare i registri ogni volta si rischierebbe di salvare più volte lo stesso valore p.27/55 p.28/55
8 Salvataggio di più registri Esempio Se una funzione deve salvare più registri, muove $sp tante volte quante sono i registri salvati Ottimizziamo! Posso usare solo una addi $sp,$sp,-4*(numero di registri) # PUSH($ra) addi $sp,$sp,-4 sw $ra,0($sp) # PUSH($a0) addi $sp,$sp,-4 sw $a0,0($sp)...e......diventa... addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp)...e poi scrivo nello slot giusto usando l offset # POP($a0) lw $a0,0($sp) addi $sp,$sp,4 # POP($ra) lw $ra,0($sp) addi $sp,$sp,4...diventa... lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 Scoping p.29/55 p.30/55 Scoping e Linguaggio Macchina In C le variabli possono essere definite dentro alle funzioni (locali) o fuori (globali) Le variabili globali possono essere lette e scitte da tutte le funzioni Quelle locali sono private delle funzioni in cui sono definite Per ora abbiamo visto solo come implementare variabili globali Direttiva.data Come facciamo a implementare le variabili locali? p.31/55 p.32/55
9 Variabili locali Esempio C Il problema è lo stesso che abbiamo visto per creare spazio privato dove salvare i registri Anche la soluzione è la stessa: usare lo Stack le variabili vengono assegnate allo stack e $sp viene spostato di conseguenza In C: int incrementa(int x) { return x+1; } int incrementa2(int x) { int temp=x+1; return incrementa(temp); } p.33/55 Esempio assembly p.34/55 Frame pointer In assembly: incrementa: addi $v0,$a0,1 jr $ra incrementa2: #fa spazio per temp addi $sp,$sp,-4 addi $v0,$a0,1 sw $v0,0($sp) #salvo $ra e $a0 addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) lw $a0,8($sp) #$sp si è mosso! jal incrementa lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 #elimino lo spazio #riservato per temp addi $sp,$sp,4 jr $ra L offset rispetto allo stack pointer cambia a seguito di movimenti dello stack (inserimenti o rimozioni) Per questo è riservato un registro $fp (frame pointer) che punta alla posizione di $sp all inizio della procedura e non cambia. L uso di questo registro è opzionale dovete assegnare voi il valore a $fp all inizio della procedura (dopo averne salvato il valore nello stack) p.35/55 p.36/55
10 Global pointer Global pointer Esiste un atro registro dall uso opzionale: $gp (global pointer) Questo punta nel mezzo dale sezione.data A cosa serve? A ottimizzare le load delle varabili globali Abbiamo visto che per caricare una variabile locale dobiamo: 1. caricare l indirizzo in un registro (lui + addi/ori) 2. caricare il valore: lw dest,0(reg) Il gobal pointer punta in mezzo ai primi (2 16 ) bytes della sezione global Le variabli globali in quella porzione di indirizzi possono essere caricati con una sola istruzione lw dest,indirizzo($gp)...dove indirizzo individua la variabile. SPIM p.37/55 p.38/55 Configurazione di Memoria SPIM è il simulatore di assembly MIPS C è per Windows e Unix/Linux Puntatori dalla pagina web del corso ( lab-arch) hex : Riservata hex : Comincia il programma (.text) hex : Cominciano i dati (.data) 7FFFFFFF hex : [Stack] hex : [Kernel] p.39/55 p.40/55
11 SPIM e i programmi SPIM e i programmi II Tipicamente, SPIM antepone al programma un programmino per calcolare i dati in input E poi chiama il nostro programma, che assume abbia un etichetta main Il nostro programma dovrà cominciare con un etichetta main....text main: add $t0, $t1, $t2 # comincia il programma Siccome SPIM chiama il nostro programma main con una jal main (jump and link) lo vede come una procedura (parlemo più avanti delle procedure) Alla fine del nostro programma, per uscire, ritorniamo indietro con j $ra.text main: j $ra Numeri p.41/55 p.42/55 Incongruenza In SPIM, i numeri che scriviamo in assembly sono in base 10; se vogliamo un numero esadecimale (base 16) dobbiamo precederlo con 0x Esempi: addi $t0, $t1, 10 #t0 = t1+10 addi $t0, $t1, 0x10 #t0 = t1+16 ATTENZIONE: nella finestra dei registri, i valori sono in esadecimale, anche se non c è nessun 0x a ricordarvelo p.43/55 p.44/55
12 Precauzioni Illegalità Assicuratevi che quando eseguite il programma, la configurazione sia pulita Precauzioni (cont.) Gestione della finestre... Ricordatevi... SPIM (XSPIM, PCSPIM) è un programma come un altro, scritto da una persona come tale, può avere errori o cose strane versione attuale: Ci possono essere istruzioni illegali in un programma Ad esempio, un accesso alla memoria (load/store/jump) che non rispetta il principio di allineamento Oppure, una divisione per zero Che fare? p.45/55 p.46/55 Eccezioni (exceptions) Soluzione 1: si blocca tutto Non molto conveniente... basta una piccola dimenticanza, e tutto il programma si ferma Può andar bene per programmi giocattolo, ma pensate cosa succerebbe a programmi più grossi, tipo sistemi operativi È come se ad ogni piccolo errore, Windows 98 andasse in tilt... Lasciamo perdere! L altra soluzione è di avere qualcosa che gestisce queste situazioni di emergenza senza interrompere il programma Una sorta di dottore cui rivolgerci perché qualcosa è andato storto le cosiddette eccezioni Eccezioni Essenzialmente, quando un programma incontra un istruzione illegale, va dal medico a seconda dell istruzione, chiama dei programmi appositi che cercano di recuperare dall errore p.47/55 p.48/55
13 Eccezioni (cont.) Hotel di Hilbert A questi programmi vengono passate le informazioni necessarie per cercare di risolvere la situazione, quali Indirizzo dell istruzione colpevole Tipo di errore Valori dei registri Etc etc... In questo grande Hotel c è un numero infinito di stanze I numeri di stanza sono 1, 2, 3, 4, 5, 6,... L hotel è pieno p.49/55 Hotel di Hilbert (cont.) p.50/55 Hotel di Hilbert (cont.) Arriva un cliente il gestore chiede gentilmente al signore della stanza 1 di passare alla stanza 2, a quello della stanza 2 di passare alla stanza 3, etc. etc. sistema il nuovo arrivato nella stanza 1 Arriva un autobus enorme, con dentro un numero infinito di clienti Il gestore chiede gentilmente al signore della stanza 1 di passare alla stanza 2, a quello della stanza 2 di passare alla stanza 4, a quello della stanza 3 di passare alla stanza 6, etc. etc. sistema i nuovi arrivati nelle stanze 1, 3, 5, 7... p.51/55 p.52/55
14 Nel computer... Computer e Hotel di Hilbert Il computer è l hotel Ogni stanza è una frazione di secondo Il processore è il gestore L autobus è un programma che chiede di essere eseguito (ha bisogno, potenzialmente, di un sacco di tempo) L hotel è pieno a ogni frazione di secondo, il computer sta eseguendo un programma Arriva l autobus chiediamo di lanciare un altro programma Il processore, da buon gestore, sistema i nuovi arrivato nelle stanze 1, 3, 5, 7,... Nella 1a frazione di secondo, esegue il nuovo programma, nella 2a, continua quello che stava facendo prima, nella 3a, continua col nuovo programma, nella 4a continua quello di prima, e così via alternandosi... p.53/55 p.54/55 Multitask Questo è detto multitask o parallellismo di esecuzione Un solo processore riesce ad eseguire più programmi contemporaneamente Multitask e robustezza Se un programma esegue un istruzione illegale, viene lanciata un eccezione Anche nel caso più banale, l eccezione può stampare un errore e uccidere il programma perdiamo UN SOLO programma, ma tutti gli altri programmi continuano a essere eseguiti senza eccezioni, perderemmo tutti i programmi! p.55/55
Laboratorio di Architettura lezione 7. Massimo Marchiori W3C/MIT/UNIVE
Laboratorio di Architettura lezione 7 Massimo Marchiori W3C/MIT/UNIVE La scorsa lezione Direttive assembly Etichette (labels) Esempi di compilazione delle strutture di controllo di alto livello (if, while)
DettagliArchitetture dei Calcolatori
Architetture dei Calcolatori Lezione 8 -- 01/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Create da: F. Lo Presti Modificate da: E.Casalicchio Le procedure q In ogni linguaggio
Dettagli15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio
15 April 2011 05 LABORATORIO 04 PROCEDURE STACK CHIAMATA A PROCEDURE I. Frosio 1 SOMMARIO Procedure Stack Chiamata a procedure 2 PERCHÈ LE PROCEDURE? 15 April 2011 Main Proc3 Proc2 Proc1 Programmazione
DettagliCorso di Architettura (Prof. Scarano) 10/05/2002
Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata
DettagliAssembly (3): le procedure
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliLe procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)
Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo
DettagliAssembly IV Le procedure
rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:
DettagliIl linguaggio assembly
Il linguaggio assembly Chiamata a procedura PH cap. 2.7 e app. A.6 1 Chiamata a procedura in C int prod (int x, int y) { int out; out = x * y; return out; } f = f + 1; if (f == g) res = prod(f,g); else
DettagliCalcolatori Elettronici
Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione
DettagliConvenzioni di chiamata a procedure
Università degli Studi di Milano Laboratorio di Architettura degli Elaboratori II Corso di Laurea in Informatica, A.A. 2016-2017 Convenzioni di chiamata a procedure Nicola Basilico Dipartimento di Informatica
DettagliAssembler MIPS 32 Assembly II
TITLE Assembler MIPS 32 Assembly II Riccardo Solmi 1 Indice degli argomenti Programmazione assembly Definizione e controllo di sottoprogrammi Definizione di funzione Chiamate a funzioni Convenzioni riguardanti
DettagliArchitettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H
Architettura dei calcolatori e sistemi operativi Sottoprogrammi e MIPS Espressioni algebriche Capitolo 2 P&H Sottoprogrammi Modello di chiamata Area di attivazione Calcolare un espressione algebrica 2
DettagliUniversità degli Studi di Cassino
Corso di Gestione dei sottoprogrammi Anno Accademico 2007/2008 Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma
DettagliFetch Decode Execute Program Counter controllare esegue prossima
Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo
DettagliIstruzioni di controllo del flusso
Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal
DettagliARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A
ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A *** indicano le affermazioni corrette. 1. Con riferimento alle architetture dei calcolatori ed alla valutazione
DettagliIstruzioni di trasferimento dati
Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale
di Cassino e del Lazio Meridionale Corso di Gestione dei sottoprogrammi Anno Accademico Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad
DettagliGestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma
Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma CALL sottoprogramma RETURN Subroutine linkage CALL: viene salvato l indirizzo di
DettagliIl set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini
Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliMIPS Instruction Set 2
Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general
DettagliLaboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE
Laboratorio di Architettura lezione 5 Massimo Marchiori W3C/MIT/UNIVE Da Alto a Basso livello: compilazione Come si passa da un linguaggio di alto livello a uno di basso livello? Cioe a dire, come lavora
DettagliArchitetture dei Calcolatori
Architetture dei Calcolatori Lezione 11 -- 10/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Fattoriale: risparmiamo sull uso dei registri q Rispetto alla soluzione precedente
DettagliAssembly MIPS: le procedure
Architettura degli Elaboratori e delle Reti Assembly MIPS: le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1/40 Chiamata a procedura: esempio
DettagliIl set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini
Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliSystem Calls, Register Spilling
System Calls, Register Spilling Ultimo aggiornamento: 8/4/2016 UNIVERSITÀ DEGLI STUDI DI MILANO nicola.basilico@unimi.it http://basilico.di.unimi.it/ Esercizio 3.1 Eseguire il seguente codice assembly
DettagliMacchina di Riferimento: argomenti
Macchina di Riferimento: argomenti L'architettura di una macchina MIPS Organizzazione della memoria I registri della CPU L'esecuzione dei programmi Il ciclo fetch-execute Il simulatore SPIM 1 Architettura
DettagliAssembly V: Procedure annidate e recursive
Architettura degli Elaboratori e delle Reti Lezione 15 Assembly V: Procedure annidate e recursive Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliGestione dello Stack nel MIPS
Gestione dello Stack nel MIPS Lo stack cresce da indirizzi di memoria alti verso indirizzi di memoria bassi ad es. sp-> 0x7fffffff 0x7ffffdfc riservata stack L inserimento di un dato nello stack (operazione
DettagliLa scorsa lezione. Laboratorio di Architettura. Word e bytes... Questa lezione. Lezione 8
La scorsa lezione Laboratorio di Architettura Lezione 8 Andrea Torsello 1 Dipartimento di Informatica Università Ca Foscari di Venezia Procedure Convenzione di chiamata Stack (Push / Pop) Implementazione:
DettagliARM: stack e subroutine
ARM: stack e subroutine 05.d Le istruzioni di accesso allo stack L istruzione di chiamata a subroutine Gestione degli stack frame Istruzione di store multiplo (STM Le istruzioni LDR e STR operano su parole
DettagliESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:
Università degli Studi di Milano Corso Architettura degli elaboratori e delle reti Prof. Cristina Silvano A.A. 2004/2005 Esame scritto del 15 luglio 2005 Cognome: Matricola: Nome: Istruzioni Scrivere solo
DettagliLaboratorio di Architettura
Laboratorio di Architettura Lezione 5 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia p.1/49 La scorsa lezione Basi della compilazione da alto livello a basso livello Rappresentazione
DettagliLaboratorio di Architettura lezione 11. La scorsa lezione. Motivi? Word e bytes
Laboratorio di Architettura lezione 11 Massimo Marchiori W3C/MIT/UNIVE La scorsa lezione Nove gradi di separazione Procedure ricorsive Stack Push / Pop Fibonacci Word e bytes Finora, abbiamo solo agito
DettagliMemoria: lettura, scrittura e indirizzamento
Memoria: lettura, scrittura e indirizzamento Ultimo aggiornamento: 27/3/2015 Università degli studi di Milano matteo.re@unimi.it https://homes.di.unimi.it/re/arch2-lab-2015-2016.html Organizzazione della
DettagliL ambiente di simulazione SPIM
Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/20
DettagliLe tre famiglie fondamentali. Laboratorio di Architettura. 1. Manipolazione di dati. 1.1 Aritmetica di base. Lezione 3
Le tre famiglie fondamentali Laboratorio di Architettura Lezione 3 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia Ci sono tre famiglie fondamentali di istruzioni, per: 1.
DettagliManualino minimale MIPS
Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Manualino minimale MIPS Marco Tarini Operazioni aritmetiche Nome Comando completo Esempio Sintassi (es) Significato Semantica
DettagliIstruzioni assembler Istruzione N Registri
Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e
DettagliIl linguaggio del calcolatore: linguaggio macchina e linguaggio assembly
Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull
DettagliDal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione
Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7
DettagliIl Linguaggio Assembly: Le procedure
Il Linguaggio Assembly: Le procedure Prof. Alberto Borghese Ing. I. Frosio Dipartimento di Scienze dell Informazione {borghese,frosio}@dsi.unimi.it Università degli Studi di Milano Riferimento sul Patterson:
DettagliSpazio di indirizzamento virtuale
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){
DettagliLe procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I
Le procedure ricorsive Come eseguire un programma Architettura degli Elaboratori e delle Reti, Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:
DettagliProgrammazione II. Lezione 7. Daniele Sgandurra 9/11/2010.
Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010
DettagliIl simulatore SPIM SPIM
Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html
DettagliLinguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.
Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/32 Linguaggio
DettagliLa gestione della memoria. Gestione della memoria. Uso della Memoria RAM
La gestione della memoria Gestione della memoria Stack di attivazione, Heap Come il compilatore-interprete, organizza i dati necessari all esecuzione del programma. Alcuni aspetti organizzativi già visti
DettagliArchitettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H
Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello
DettagliLinguaggi. Laboratorio di Architettura INTERPRETI VANTAGGI DEBUG. Lezione 2
Linguaggi Laboratorio di Architettura Lezione 2 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia È possibile programmare il computer usando vari linguaggi di programmazione
Dettagli/ sezione dichiarativa variabili globali / #define N 10 int vett [N];
esercizio linguaggio macchina esame 9 luglio 2015 prima parte traduzione in assembler Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) MIPS il frammento di programma C riportato
DettagliLinguaggio Assembly e linguaggio macchina
Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliIl linguaggio macchina
Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/33 Linguaggio
DettagliL ambiente di simulazione SPIM
Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28
DettagliSubroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami
Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso
DettagliSubroutine in linguaggio macchina: collegamento e passaggio dei parametri
Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso
DettagliEsempi di Programmi Assembly. Luigi Palopoli, Luca Abeni
Esempi di Programmi Assembly Luigi Palopoli, Luca Abeni Scopo della lezione In questa lezione vedremo alcuni esempi di programmi (o frammenti di programmi) in vari linguaggi assembly per renderciconto
DettagliCalcolatori Elettronici Lezione A4 Programmazione a Moduli
Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo
DettagliLinguaggio Assembly e linguaggio macchina
Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliGestione delle eccezioni.
Gestione delle eccezioni nicola.basilico@unimi.it http://homes.di.unimi.it/basilico/teaching/ Eccezioni Fetch Decodifica Calcolo Lettura / scrittura Eccezione (es. istruzione non riconosciuta) Eccezione
DettagliLinguaggio Assembly e linguaggio macchina
Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
DettagliIl linguaggio Assembly
Il linguaggio Assembly Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio Assembly
DettagliLe procedure. Architetture dei Calcolatori (Lettere. Le procedure (3) Le procedure (2)
Le procedure Architetture dei Calcolatori (Lettere A-I) Procedure Prof. Francesco Lo Presti In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo
DettagliCalcolatori Elettronici
Calcolatori Elettronici SPIM Francesco Lo Presti Rielaborate da Salvatore Tucci SPIM q Simulatore che esegue programmi assembler per architetture RISC MIPS R2000/R3000 Legge programmi in assembler MIPS
DettagliCalcolatori Elettronici
Calcolatori Elettronici Assemblatore, Linker e Loader Francesco Lo Presti rielaborate da Salvatore Tucci Assembler, Linker & Loader 1 Compilazione q Nella prima fase, il programma ad alto livello viene
DettagliUniversità degli Studi di Cassino
Corso di Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 2007/2008 Francesco Tortorella Istruzioni di confronto Istruzione Significato slt $t1,$t2,$t3 if
DettagliInvocazione di funzioni. Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione)
Invocazione di funzioni Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione) Passaggio parametri F(a,b,c) { } Z = g(x, y, z) Record di attivazione o registri
Dettagli[http://www.di.univaq.it/muccini/labarch]
[http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 3: Introduzione a SPIM
Dettagli5 April LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE. I. Frosio
5 April 2012 04 LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE I. Frosio 1 SOMMARIO If... Then... If... Then... Else... For... Break... While... Do Do... While Switch (jump address
DettagliLaboratorio di Architettura degli Elaboratori
Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Set di istruzioni del MIPS32: istruzioni aritmetiche e di trasferimento Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni
DettagliIl linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I
Il linguaggio Assembly Architettura degli Elaboratori e delle Reti Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it 1 Linguaggio
DettagliUniversità degli Studi di Roma La Sapienza
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Introduzione ai concetti ed al simulatore SPIM Indice degli argomenti Introduzione Assembler, compilatore, linker, programma
Dettaglislt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante
Istruzioni di confronto Istruzione Significato slt $t1,$t2,$t3 if ($t2
DettagliIl linguaggio macchina
Il linguaggio macchina Istruzioni macchina (PH 2.4) Indirizzamento (PH 2.9) Costanti a 32-bit (PH 2.9) 1 Linguaggio macchina Le istruzioni in linguaggio assembly devono essere tradotte in linguaggio macchina
DettagliProcedure: esempi. Esempi: ricorsione fattoriale Fibonacci ordinamenti
Procedure: esempi Esempi: ricorsione fattoriale Fibonacci ordinamenti 1 Fattoriale ricorsivo PH p. 83 e A27 main(int argc, char *argv[]) { int n; printf( Inserire un numero intero\n"); scanf("%d", &n);
DettagliIl linguaggio assembly
Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria
DettagliLaboratorio di Architettura
Laboratorio di Architettura Lezione 2 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia p.1/50 Linguaggi È possibile programmare il computer usando vari linguaggi di programmazione
DettagliGestione della memoria
Gestione della memoria Stack di attivazione, Heap Stack di attivazione, Heap Gestione della memoria 1 / 52 La gestione della memoria Come il compilatore-interprete, organizza i dati necessari all esecuzione
DettagliFRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc
44 FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc MODELLO VERILOG DEL PROCESSORE 45 MODELLO VERILOG DEL SISTEMA COMPLETO
DettagliDebug di un programma
Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal
DettagliIstruzioni e linguaggio macchina
Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare
DettagliProgrammi in Assembly
Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite
DettagliSistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli
DettagliIl linguaggio del calcolatore: linguaggio macchina e linguaggio assembly
Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin ORGANIZZAZIONE DEL CALCOLATORE:
DettagliSPIM e MIPS. Non abbiamo bisogno di una PSP per testare il codice
SPIM e MIPS Non abbiamo bisogno di una PSP per testare il codice Michele Jazzinghen Bianchi Interessi: Game Design, Embedded Systems email: michele.bianchi@unitn.it Webpage: http://disi.unitn.it/~bianchi
DettagliCorso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.
di Cassino e del Lazio Meridionale Corso di MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 201/201 Francesco Tortorella Istruzioni di confronto Istruzione
DettagliLezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano
Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio
DettagliLa struttura delle istruzioni elementari: il linguaggio Macchina. Sommario
La struttura delle istruzioni elementari: il linguaggio Macchina Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano Riferimento sul
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliLezione laboratorio SPIM
Lezione laboratorio SPIM Uso di XSPIM Uso di PCSPIM Esercizio laboratorio 1 Cos è SPIM e cosa fa? SPIM è un simulatore che esegue programmi per le architetture MIPS R2000/R3000 SPIM può leggere ed assemblare
DettagliLezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano
Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio
DettagliL'architettura del processore MIPS
L'architettura del processore MIPS Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento
DettagliModifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione
Modifiche di orario Lezione 19 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Al posto della lezione di domani giovedì 22/5 (12-1)
Dettaglii = 0; somma = 0; while i!= n { somma = somma + A[i]; if somma < n j = 0; else j = f2(a[i],somma); i = i + 1; $v0 return j
Esercizio 1 Compilare la seguete fuctio it esempio(it A[],it ) { it i; it somma; it j; i = 0; somma = 0; while i!= { somma = somma + A[i]; if somma < j = 0; else j = f2(a[i],somma); i = i + 1; $v0 retur
DettagliMini-dispensa sui puntatori in C
Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile
Dettagli