Architetture degli Elaboratori II, Laboratorio A.A. 2015/2016
Corso di Laurea: triennale in Informatica
Data inizio corso: 11/03/2015
Ricevimento studenti: concordare appuntamento via e-mail (stanza S210 secondo piano DI, via Comelico 39 Milano).
Docente: Matteo Re
Email: matteo.re (at) unimi.it
Il sito del corso del prof. Pedersini: Architettura degli Elaboratori I e II. Turno 2 (cognomi G-Z)
Il sito con il materiale del prof. Basilico Architetture degli Elaboratori II, Laboratorio , Turno 1
In questa pagina troverete il materiale didattico (slide, soluzioni degli esercizi,...) utilizzato durante le lezioni. I file delle slide verranno caricati il giorno successivo ad ogni lezione mentre le soluzioni degli esercizi saranno rese disponibili nella lezione successiva, dopo la discussione delle soluzioni proposte da voi. Per problemi inerenti agli esercizi potete contattarmi tramite email. Le lezioni si terranno ogni venerdi' 13.30-15.30 aula 309 presso il settore didattico in via Celoria. Variazioni a questo schema verrano comunicate mediante una mailing-list dedicata al corso e mediante la sezione Avvisi di questa pagina web.
Modalita' d'esame:.
- L'esame prevede la realizzazione di un progetto individuale in assembly, sulla linea delle esercitazioni tenute in laboratorio. Tale progetto deve essere preventivamente concordato con il docente, realizzato in SPIM e corredato da una breve relazione per poi essere discusso in un esame orale.
- La realizzazione di un progetto per sostenere l'esame di laboratorio di Architetture 2 avviene in tre fasi: proposta, consegna e discussione del progetto.
- FASE I: proposta . Lo studente, nel momento che ritiene piu' opportuno, propone un'idea di progetto. L'idea puo' essere preventivamente discussa in laboratorio con il docente che potra' guidare verso la scelta di un progetto adeguato. Una volta fissata l'idea, lo studente invia la proposta per mail ( all'indirizzo matteo.re@unimi.it ) avente come oggetto arch2lab proposta progetto e come allegato un file avente nome cognome_nome_matricola_arch2lab_specifica.pdf con descrizione sintetica (circa 1 pagina) dell'idea. A fronte di una proposta ricevuta, il docente approva il progetto o consiglia delle modifiche per renderlo piu' significativo.
- FASE II: consegna . Una volta concluso, il progetto e' consegnato al docente via mail ( all'indirizzo matteo.re@unimi.it ) L'email avra' come oggetto : arch2lab consegna progetto, e avra' come allegato un archivio avente nome cognome_nome_matricola_arch2lab.zip (o tar.gz) e contenente il file delle specifiche (quello approvato dal docente in fase I), il sorgente assembly in un file nominato cognome_nome_matricola_arch2lab_progetto.asm.
- FASE III: Discussione e valutazione . Lo studente che ha consegnato ricevera' una mail di convocazione all'esame orale nella prima data di appello disponibile. Le date sono pubblicate sulla homepage del corso (edizione corrente). Ciascuna data e' associata ad una deadline per la consegna. Le consegne che non rispetteranno la deadline non potranno essere discusse nell'appello corrispondente (dovranno fare riferimento ad un appello successivo). Il voto ottenuto nella prova di laboratorio ha validita' per 18 mesi dal suo conseguimento e incide per 1/3 sul voto finale del corso di Architetture. In caso di necessita' giustificate sara' possibile concordare date al di fuori degli appelli del calendario.
- Il calendario puo' subire variazioni che verranno propriamente segnalate nella sezione Avvisi in questa pagina.
- E' utile ed incoraggiata la discussione tra studenti nelle fasi di sviluppo e realizzazione del progetto. Tuttavia a fronte di ragionevoli sospetti e prove a supporto del fatto che il progetto e' stato copiato in toto dai progetti di altri studenti o da materiale proveniente da internet verranno adottati provvedimenti severi. Questo al docente non fa piacere ma e' indice di una forma di rispetto verso gli studenti che lavorano per produrre un progetto utilizzabile per superare l'esame.
Slide lezioni :
Lezione 1 (11/03/2016) :
Introduzione al laboratorio. Assembly. Da codice ad alto livello a codice macchina. Assembly. Assembler. Linker. Architettura MIPS32 (richiami) . Modello di programmazione. Il simulatore SPIM. Istruzioni aritmetiche. Esercizi.
Lezione 2 (18/03/16) :
Memoria: lettura, scrittura e indirizzamento. Organizzazione della memoria. Indirizzamento del singolo byte. Utilizzo della memoria. Accesso alla memoria in Assembly. Vettori. Inizializzazione esplicita degli indirizzi. Direttive assembler.
Lezione 3 (01/04/16) :
Chiamate di sistema. Allineamento dati. Register spilling. Uso dello stack.
Lezione 4 (08/04/16) :
Controllo di flusso. Salti non condizionati. Salti condizionati. If - Then . If - Then - Else . Do - While . While . Condizioni di disuguaglianza. Il costrutto Switch. Ampiezza dei salti non condizionati. Ampiezza dei salti condizionati. Esercizi.
Lezione 5 (15/04/16) :
Eccezioni. Gestione software delle eccezioni. Registri per la gestione delle eccezioni. Esempi. Gestione delle eccezioni: prologo, corpo della procedura, epilogo. Esercizi.
Lezione 6 (21/04/16) :
Procedure e funzioni : Convenzioni di chiamata in MIPS, Convenzioni chiamante, Linkage (andata ritorno), Passaggio di argomenti, Restituire un risultato, Convenzioni chiamato, Call frame, Step fondamentali chiamata a procedura/funzione, esempi, esercizi.
Lezione 7 (28/04/16) :
Procedure annidate.
Lezione 8 (06/05/16) :
Allocazione dinamica memoria: Heap, Chiamata di sistema sbrk, E1. Allocazione dinamica, scrittura e lettura nel blocco di memoria ottenuto. Record e struct. E2. Allocazione dinamica di record, inizializzazione, copia da record a record. E3. Richiesta all.utente dei dati da inserire nel record. E4. Allocazione dinamica di array di dimensione variabile. Esempio possibile progetto esame.
Lezione 9 (13/05/16) :
Strutture dati II : Allocazione dinamica memoria (ripasso). Heap (ripasso). Chiamata di sistema sbrk (ripasso). Liste concatenate. Liste concatenate, costruzione in memoria statica. Liste concatenate, allocazione dinamica memoria per i nodi. Nodo corrente ed estensione della lista concatenata. Costruzione lista concatenata mediante cicli. Attraversamento lista concatenata e stampa del suo contenuto. Esercizi
Lezione 10 (27/05/16) :
Oggetti: Jump Table. Istruzione jalr. Librerie caricate dinamicamente. Oggetti (dal punto di vista concettuale). Oggetti (condivisione in memoria del codice macchina). Oggetti in memoria statica. Esercizi.
Calendario per la consegna dei progetti :
Data e ora orale | Luogo | Deadline consegna |
---|---|---|
18 luglio 2016 09:00 am |
Aula Delta Dip. Informatica |
13 luglio 2016 |
30 gennaio 2017 09:00am |
Aula Omega Dip. Informatica |
23 gennaio 2017 |
14 febbraio 2017 09:00am |
Aula Omega Dip. Informatica |
7 febbraio 2017 |
Avvisi :
- [09/07/2016 - 15:21 pm] Molti di voi mi hanno comunicato che hanno difficolta' a stare nei tempi della deadline di consegna dei progetti per la sessione del 18 luglio. La deadline di consegna dei progetti e' spostata dal giorno 11 luglio al giorno 13 luglio.
- [05/03/2016 - 09:16 am] Il corso di laboratorio iniziera' Venerdi' 11 marzo 2016.
Materiale aggiuntivo usato a lezione :
- Materiale Lab 1 (file da caricare in SPIM)