SISTEMI DI CALCOLO

Obiettivi formativi

Il corso fornisce una panoramica dal punto di vista del programmatore su come i sistemi di calcolo eseguono programmi, memorizzano informazioni e comunicano fra loro, discutendo aspetti come prestazioni, portabilità e robustezza. Gli studenti vengono introdotti ai princìpi di funzionamento di base di un calcolatore moderno, mostrando come i compilatori traducono codice C in linguaggio assembly e come i programmi interagiscono con il sistema operativo per la gestione delle risorse di calcolo.

Canale 1
LEONARDO QUERZONI Scheda docente

Programmi - Frequenza - Esami

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.
LEONARDO QUERZONI Scheda docente

Programmi - Frequenza - Esami

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.
Canale 2
RICCARDO LAZZERETTI Scheda docente

Programmi - Frequenza - Esami

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.
RICCARDO LAZZERETTI Scheda docente

Programmi - Frequenza - Esami

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).
Modalità insegnamento
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.
Frequenza
opzionale ma consigliata
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à.
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.

Programmi - Frequenza - Esami

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.
  • Codice insegnamento1056029
  • Anno accademico2025/2026
  • CorsoIngegneria Informatica e Automatica
  • CurriculumInformatica
  • Anno2º anno
  • Semestre2º semestre
  • SSDING-INF/05
  • CFU9