Programma
- Struttura generale dell'hardware di un sistema di calcolo: macchina di Von Neumann; porte logiche AND, OR, NOT, NOR, NAND, XOR e tabelle di verità; realizzazione porte logiche mediante resistenze e transistor con demo pratica in aula; cenni a tecnologie VLSI; visualizzazione al microscopio di un wafer al silicio reale. logica combinatoria, addizionatore, logica sequenziale, flip-flop, clock; introduzione ai sistemi operativi: obiettivi di design e funzionalità principali
- Toolchain compilazione gcc (-E, -c, -S, -o); assembly vs. linguaggio macchina, objdump -d, istruzioni giustapposte con formato variabile, esempio di scrittura di file .s, direttiva .globl, istruzione movl, letterali costanti $, istruzione ret, registro %eax come valore di ritorno a 32 bit, corrispondenza suffissi IA32 e tipi (b, w, l). Comando file per analizzare il tipo di file. nozione ISA, registri general-purpose.
- Istruzioni aritmetico-logiche (incluso idiv), espressioni aritmetiche, %esp, stack frame e accesso ai parametri mediante modo di indirizzamento registro con spiazzamento d(%esp), endianness.
- Selezione e cicli in x86
- Puntatori, array e stringhe in x86
- Istruzione call e passaggio dei parametri, ABI, caller-save/callee-save, push, pop, type cast
- Variabili locali in stack, array allocati in stack, lea, espr booleane (and, or, not, setcc)
- Consultazione manuale Intel e ABI 386, allineamento e padding nelle strutture in C, strutture allocate in stack
- Shift, cmov, estensione a 64 bit, uso di gdb
Prerequisiti
Nozioni di base sul modello di macchina di Von Neumann, algebra booleana, rappresentazione dei numeri interi con e senza segno, rappresentazione dei numeri in virgola mobile, conoscenza del linguaggio C (in particolar modo i tipi array, i puntatori, gli operatori */& e l’aritmetica dei puntatori).
Testi di riferimento
Dispensa del corso (liberamente disponibile sul sito del corso).
Frequenza
La frequenza al corso è facoltativa
Modalità di esame
Per superare l'esame, lo studente deve superare un prova scritta (2 ore) contenente domande aperte sui temi trattati dal corso ed esercizi di programmazione. La prova viene svolta in un aula dell'università.
Bibliografia
R. E. Bryant and D. R. O’Hallaron
Computer Systems - A Programmer’s Perspective
Pearson
Modalità di erogazione
Il corso viene erogato in modalità blended: lezioni in presenza per la maggior parte degli studenti e collegamento in streaming per gli studenti che hanno difficoltà a partecipare in aula.