SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1
Calcolatori Elettronici e
Sistemi Operativi
Contenuti
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1
Prerequisiti
7. Gestione dell'I/O
8. Gerarchie di memorie
23 Organizzazione funzionale del calcolatore II: Spazio di memoria, di I/O e registri del processore Il linguaggio dei calcolatori
24 Linguaggio macchina, mnemonico e Assembly Il linguaggio dei calcolatori
25 Indirizzamento delle istruzioni operative: di registro, immediato, di memoria, delle porte di I/O Il linguaggio dei calcolatori
26 Principali Istruzioni ALU I: Istruzioni di trasferimento e gestione della pila Il linguaggio dei calcolatori
27 Principali istruzioni ALU II: Istruzioni aritmetiche, di rotazione, traslazione e logiche Il linguaggio dei calcolatori
28 Istruzioni di controllo e gestione sottoprogrammi Il linguaggio dei calcolatori
29 Programmare in Assembly I: Assembler GAS, direttive e primo esempio di programma Il linguaggio dei calcolatori
Programmare in Assembly II: Dichiarazioni di variabili e costanti, come usare l'assemblatore, esercizio in
30 Assembly Il linguaggio dei calcolatori
31 Controllo di flusso dei programmi in Assembly: if..then..else, cicli ed esercizi Il linguaggio dei calcolatori
32 Sottoprogrammi e passaggi di parametri Il linguaggio dei calcolatori
33 Gestione I/O in Assembly Il linguaggio dei calcolatori
34 Introduzione all Hardware del calcolatore: Struttura HW del Calcolatore
35 Funzionamento interno del calcolatore: Processore, Bus locale e Organizzazione dello spazio esterno Struttura HW del Calcolatore
36 Architettura di un calcolatore a 32 bit: Aspetti fisici del processore, piedinatura Struttura HW del Calcolatore
37 Il Bus locale e lo spazio esterno Struttura HW del Calcolatore
38 Il bus dati a diversa ampiezza: descrizione e montaggio di interfacce Struttura HW del Calcolatore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1
42 Gestione delle interruzioni mascherabili: il controllore APIC e suo funzionamento Gestione dell'I/O
43 Gestione delle interfacce ad interruzione di programma Gestione dell'I/O
44 Introduzione alle gerarchie di memoria: Motivazioni e memorie DRAM Gerarchie di memorie
45 Memorie Cache I: Principio di località e funzionamento Gerarchie di memorie
46 Memorie Cache II: Il controllore della memoria cache e le cache associative ad insiemi Gerarchie di memorie
47 Bus PCI I: Introduzione, Collegamenti e Transazioni Nuove tendenze Architetturali
48 Bus PCI II: Configurazione delle funzioni e Inizializzazione Nuove tendenze Architetturali
49 Bus PCI III: Gestione delle interruzioni con PCI e … Nuove tendenze Architetturali
Accesso in DMA sul bus locale: il controllore DMA, l'accesso al bus e trasferimenti,
50 interfacce in DMA Nuove tendenze Architetturali
51 Bus Mastering Nuove tendenze Architetturali
52 Tecnica del Pipeline Nuove tendenze Architetturali
53 Esecuzione fuori ordine Nuove tendenze Architetturali
54 Esecuzione speculativa Nuove tendenze Architetturali
Architettura interna del processore con pipeline, esecuzione fuori ordine e speculativa:
55 ripasso ed esempi Nuove tendenze Architetturali
56 Introduzione alle GPU: filosofia di progetto e semplice architettura Nuove tendenze Architetturali
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1
Attività n°: Introduzione al corso
1
75 Introduzione alla gestione della memoria: indirizzi logici e fisici, swapping dei processi Gestione delle memoria
76 Gestore della memoria nei sistemi mono e multiprogrammati Gestione delle memoria
77 Frammentazione e Paginazione Gestione delle memoria
78 Architetture avanzate per la paginazione Gestione delle memoria
79 Segmentazione Gestione delle memoria
80 Memoria virtuale: Concetti principali e paginazione su richiesta Gestione delle memoria
81 Memoria virtuale: Gestione del page fault trap e algoritmo di rimpiazzamento FIFO Gestione delle memoria
82 Memoria virtuale: Algoritmo ottimale, NRU e LRU Gestione delle memoria
83 Memoria virtuale: Altri algoritmi Gestione delle memoria
84 Memoria virtuale: Modalità di allocazione frames Gestione delle memoria
85 Introduzione alla gestione dell'I/O: Il sottosistema di I/O e suoi scopi principali Gestione dell'I/O e File System
86 Struttura software di I/O: organizzazione a livelli, driver, software indipendente dai dispositivi e utente Gestione dell'I/O e File System
Gestione delle memoria secondaria: Introduzione ai dischi, algoritmi di scheduling del disco e gestione
87 errori Gestione dell'I/O e File System
88 Interfaccia del file system: il concetto di file e modalità di accesso Gestione dell'I/O e File System
89 La struttura delle directory:concetti principali, organizzazione e multiutenza Gestione dell'I/O e File System
90 Realizzazione del file system I: Organizzazione, partizioni, strutture datai Gestione dell'I/O e File System
91 Realizzazione del file system II: la struttura della directory, condivisione di file e file system in Unix Gestione dell'I/O e File System
92 Memorizzazione sul disco del file system I: allocazione contigua e lista concatenata Gestione dell'I/O e File System
93 Memorizzazione sul disco del file system II: allocazione con indice e ottimizzazione del file system Gestione dell'I/O e File System
94 Protezione: concetti principali e domini e matrici di protezione Gestione dell'I/O e File System
95 Sicurezza: concetti princilali e cenni di crittografia Gestione dell'I/O e File System
96 Conclusione del corso Gestione dell'I/O e File System
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1
Calcolatori Elettronici e
Sistemi Operativi
Introduzione al Corso
Materiali per lo studio
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1
1) Pagine Web verificate dal docente: non tutto ciò che si trova su
internet è corretto, anzi molte informazioni sono rumorose e
contraddittorie. Il docente si preoccuperà di certificare le pagine
web che riterrà utili ed interessanti per approfondire alcuni
argomenti
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1
Libri consigliati:
Reti Logiche
Paolo Corsini, Dalle porte AND OR NOT al sistema calcolatore. Un viaggio nel mondo
delle reti logiche in compagnia del linguaggio Verilog. Edizioni ETS, Pisa, 2014
Architettura dei Calcolatori:
Graziano Frosini, Giuseppe Lettieri, Architettura dei Calcolatori (Volume II), Edizioni
Pisa University Press, 2013. Disponibile come ebook (a pagamento ovvio), all'indirizzo
http://www.pisauniversitypress.it/scheda-libro/graziano-frosini-giuseppe-
lettieri/architettura-dei-calcolatori-vol-ii-9788867410811-124153.html
Sistemi Operativi
A. Silberschatz, P. B. Galvin, G. Gagne, Sistemi Operativi: Concetti ed Esempi, Ottava
Edizione, Pearson.. 2009”
Andrew S. Tanenbaum, I moderni sistemi operativi 3/Ed., Edizioni Pearson, 2009 (nel
corso a volte si fa riferimento a questo testo, ma si consiglia di preferire il precedente.)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S1
Attività n°: Introduzione al corso
1
Attenzione:
Versioni più recenti dei libri consigliati vanno più che bene.
Attenzione
La maggior parte degli argomenti trattati nel corso sono stati tratti dai libri
consigliati.
Il titolare del presente corso è il Prof. Pietro Ducange. Egli risulta l’autore principale
di tutte le lezioni.
In alcune lezioni compaiono come co-autori docenti titolari di altre Università. Tali
docenti hanno autorizzato il prof. Ducange ad utilizzare del materiale da loro
prodotto per la realizzazione di parti del presente corso.
Si invita chiunque noti delle evidenti violazioni del diritto di autore, di contattare il
prima possibile il prof. Ducange che provvederà velocemente a risolvere la
situazione.
Tutti i contenuti del presente corso sono utilizzabili solo per fini didattici dagli
studenti iscritti all’Università Telematica eCampus.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1
Calcolatori Elettronici e
Sistemi Operativi
Introduzione al Corso
Organizzazione della didattica
• La soluzione e/o le risposte caricate devono essere farina del sacco dello
studente. E’ inutile caricare la soluzione fornita dal docente nelle slide o
copiare pezzi di slide e incollarle come risposta alle domande.
• Sarà premura del docente fornire un feedback allo studente sul materiale
caricato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1
Serve anche allo studente, che con una certa frequenza entra in contatto
con il docente. Infatti, ogni volta che viene effettuato il caricamento lo
studente è tenuto (anche se non gli viene data comunicazione dalla
piattaforma) a notificare il caricamento al docente tramite sistema di
messaggistica.
Serve allo studente per capire se sta procedendo bene nello studio
(questo è valido se è lui che realizza gli esercizi e si sforza di scrivere le
risposte alle domande): il docente fornirà dei feeback tramite il quale lo
studente potrà capire a che punto è nel suo processo di apprendimento.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S2
Attività n°: Introduzione al corso
1
Purtroppo no!
WEBINAR
Sul sito del docente (http://bit.ly/1RGAdIR) sono disponibili gli orari del
ricevimento.
Calcolatori Elettronici e
Sistemi Operativi
Introduzione al Corso:
Modalità di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1
Modalità di esame:
Per le modalità di verifica per l’anno in corso fare riferimento alla scheda corso
dell’anno accademico in essere e ai documenti forniti dal docente sulla sua pagina
web (goo.gl/Eih1Kf)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1
• Tutto il materiale caricato nell’eporfolio non viene considerato per il calcolo del
voto finale. Resta comunque obbligatorio caricare esercizi e risposte alle
domande per poter accedere all’esame.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 1/S3
Attività n°: Introduzione al corso
1
Il Docente
Il Prof. Pietro Ducange si è laureato in Ingegneria Informatica presso
l’Università di Pisa nel 2005. Ha conseguito il Dottorato di Ricerca in Ingegneria
dell’Informazione nel 2009 presso lo stesso Ateneo. Da Gennaio 2009 a
Maggio 2014 è stato titolare di Assegno di Ricerca presso il Dipartimento di
Ingegneria dell’Informazione dell’Università di Pisa. Da Maggio 2014 è
Professore Associato per il settore scientifico disciplinare Ing-Inf/05 presso
l’Università degli Studi eCampus.
Il Prof. Ducange svolge attività di ricerca nel campo della Computational
Intelligence ed ha pubblicato più di 30 articoli su riviste e atti di congressi
internazionali. E’ tuttora membro del Computational Intelligence Group del
Dipartimento di Ingegneria dell’Informazione dell’Università di Pisa. Il prof.
Ducange è stato coinvolto in numerosi progetti di ricerca e sviluppo.
Attualmente partecipa ad un progetto sulle Smart Cities e ad un progetto per lo
sviluppo di sistemi di monitoraggio dei consumi elettrici in edifici pubblici e
privati.
Il Prof. Ducange è disponibile per seguire come relatore tesi di Laurea nei
settori: Data Mining, Intelligenza Artificiale, Ingegneria del Software, Sviluppo di
Applicazioni in ambiente Cloud Computing, Big Data.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Le basi dell’informatica
• Informatica (definizione informale): è la scienza della rappresentazione e dell’elaborazione dell’informazione
• Informatica (definizione formale dell’Association for Computing Machine - ACM): è lo studio sistematico degli algoritmi che
descrivono e trasformano l’informazione, la loro teoria e analisi, il loro progetto, e la loro efficienza, realizzazione e
applicazione.
• Algoritmo: sequenza precisa e finita di operazioni, comprensibili e perciò eseguibili da uno strumento informatico, che
portano alla realizzazione di un compito.
Esempi di algoritmi:
Istruzioni di montaggio di un elettrodomestico
Somma in colonna di due numeri
• Calcolatori Elettronici come esecutori di algoritmi. Gli algoritmi vengono descritti tramite programmi, cioè sequenze di
istruzioni scritte in un opportuno linguaggio comprensibile al calcolatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Efficienza:
– un algoritmo è efficiente se perviene alla soluzione del compito cui è
preposto nel modo più veloce possibile, compatibilmente con la sua
correttezza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Rappresentazione dell’informazione
Calcolatore e Informazione
dispositivi di conversione
testo IN sequenze
disegni OUT di bit
immagini
numeri
musica
...
Calcolatore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Basi di programmazione
Richiami di Fondamenti di Informatica
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Le basi dell’informatica
• Informatica (definizione informale): è la scienza della rappresentazione e dell’elaborazione
dell’informazione
Esempi di algoritmi:
Istruzioni di montaggio di un elettrodomestico
Somma in colonna di due numeri
• Calcolatori Elettronici come esecutori di algoritmi. Gli algoritmi vengono descritti tramite
programmi, cioè sequenze di istruzioni scritte in un opportuno linguaggio comprensibile al
calcolatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Efficienza:
– un algoritmo è efficiente se perviene alla soluzione del
compito cui è preposto nel modo più veloce possibile,
compatibilmente con la sua correttezza.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Rappresentazione dell’informazione
• L’informazione è qualcosa di astratto. Per poterla manipolare bisogna
rappresentarla.
• In un calcolatore i vari tipi di informazione (testi, figure, numeri, musica,…) si
rappresentano per mezzo di sequenze di bit (cifre binarie).
• Bit è l’abbreviazione di Binary digIT, numero binario. E’ l'unità di misura
elementare dell'informazione, ma anche la base del sistema numerico
utilizzato dai computer. Può assumere soltanto due valori: 0 o 1.
• Byte è l’unità di misura dell'informazione che corrisponde ad 8 bit.
• Quanta informazione può essere contenuta in una sequenza di n bit? 2n
• ATTENZIONE: Una stessa sequenza di bit può rappresentare informazione
differente.
Per esempio “01000001”
rappresenta l’intero 65, il carattere ‘A’, il colore di un puntino sullo schermo
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Calcolatore e Informazione
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S1
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Programmare
• La formulazione testuale di un algoritmo in un
linguaggio comprensibile ad un calcolatore è detta
PROGRAMMA.
• Ricapitolando, per risolvere un problema:
INTERFACCE
PROCESSORE
MEMORIA
PRINCIPALE TRASDUTTORI
Il concetto di variabile
(direttamente da Wikipedia)
• In informatica, una variabile identifica una porzione di memoria
destinata a contenere dei dati, che possono essere modificati nel
corso dell'esecuzione di un programma
• Una variabile è spesso, ma non sempre, caratterizzata da un
nome
• Una costante è invece una posizione di memoria che mantiene lo
stesso valore per tutta la durata dell'esecuzione del programma.
• Nei linguaggi tipizzati, ciascuna variabile è caratterizzata da un
tipo di dato, che specifica come devono essere considerati i dati
rappresentati, e possibilmente restringe i valori accettabili.
• L'insieme delle variabili esistenti a tempo di esecuzione è
contenuto all'interno dell'ambiente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S2
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Il concetto di algoritmo
• L’esecuzione delle azioni nell’ordine specificato dall’algoritmo consente di
risolvere il problema.
• Risolvere il problema significa produrre risultati a partire da dati in ingresso
algoritmo
risultati
dati
esecutore
- calcola –b
Var c; c=-b;
una porzione di memoria e’ riservata per il valore –b, opportunamente calcolato
dall’operatore – che potrebbe corrispondere ad un insieme di istruzioni macchina
Calcolatori Elettronici e
Sistemi Operativi
• Cosa è un algoritmo?
• Mostrare un esempio di algoritmo.
• Cosa è una variabile?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 2/S3
Titolo: Richiami di Fondamenti di Informatica
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: Introduzione e Compilazione
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Modularità
●
E' opportuno distribuire le funzionalità
delle applicazioni complesse in piu' file.
Semplifica lo sviluppo, il debugging ed il riuso
del codice.
●
L'accorpamento delle funzionalità
avviene durante la compilazione:
NON utilizzare direttive del tipo:
● #include “miofile.c”
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#
Compilazione
●
Nei sistemi Linux, la compilazione di sorgenti C
avviene utilizzando il comando gcc (GNU C
Compiler)
●
Per compilare il programma test1.c potrebbe
essere sufficiente eseguire:
gcc test1.c
Il nome dell'eseguibile, in questo caso, è a.out
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#
Compilazione
●
Per creare l'eseguibile, gcc attraversa varie fasi, tra cui:
preprocessing
compilazione
linking
●
Se l'applicazione e' distribuita in più sorgenti, può
essere sufficiente eseguire il seguente comando:
gcc -o nomefile file1.c file2.c...
In questo caso, il nome del programma eseguibile è
nomefile
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 3
#lezione#
Titolo: Linguaggio C: Prima parte
#titolo#
Attività n°: 1
#attività#
Compilazione separata
●
Normalmente, il compilatore esegue sia la
compilazione che il linking
● gcc -c file1.c esegue solo la compilazione,
producendo il file oggetto file1.o
● se abbiamo i file oggetto file1.o e file2.o, possiamo
“linkarli” con gcc file1.o file2.o, producendo a.out
●
il programma make automatizza questo processo
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: operatori, funzioni, blocchi
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S1
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 3/S2
Titolo: Linguaggio C: Prima parte
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Tipi di dati
In C esistono vari tipi di variabili, questo per venire incontro sia all'esigenze di rappresentabilità di
grossi numeri sia al maggior risparmio di memoria possibile, utilizzando di volta in volta il tipo più
adeguato ad una specifica situazione. Nella tabella seguente sono mostrati i vari tipi, con la parola
che in C ne consente l'uso (char per carattere, int per intero e così via), una spiegazione sui dati che
possono rappresentare ed il numero di byte necessari, all'interno del C, per la loro rappresentazione:
Range
Tipi di dichiarazione N. di byte
(valori min e max)
unsigned char 1 (8 bit) 0 fino 255
char 1 (8 bit) -128 fino 127
unsigned int 2 (16 bit) 0 fino 65,535
short int 2 (16 bit) -32,768 fino 32,767
int 2 (16 bit) -32,768 fino 32,767
unsigned long 4 (32 bit) 0 fino 4,294,967,295
long 4 (32 bit) -2,147,483,648 fino 2,147,483,647
float 4 (32 bit) 3.4 * (10**-38) fino 3.4 * (10**+38)
double 8 (64 bit) 1.7 * (10**-308) fino 1.7 * (10**+308)
long double 10 (80 bit) 3.4 * (10**-4932) fino 1.1 * (10**+4932)
Il tipo char è adibito a contenere uno ed un solo carattere; questa imposizione, scomoda quando
vogliamo memorizzare una successione di caratteri, è stata risolta in alcuni linguaggi adottando il
tipo string (stringa), mentre in C questa situazione viene risolta utilizzando un array di char, (ne
parleremo nel paragrafo dedicato agli array). Ritornando al nostro char, esso può contenere un
qualsiasi carattere definito secondo lo standard ASCII e quindi potrà contenere qualsiasi lettera
(maiuscola o minuscola), cifra (da 0 a 9) e simbolo previsto dalla codifica. Per dichiarare ed
inizializzare una variabile char, ad esempio inizializzandola con la lettera 'r', basta scrivere:
Il tipo int è, invece, quello che permette di contenere dei numeri; il tipo int ha le sue due varianti
che sono short e long, anche se in realtà un tipo int è già di per sé un tipo short, mentre il long
permette di estendere (utilizzando due byte in più) il range dei valori che il tipo int può assumere,
questo per venire incontro all'esigenza di lavorare con grandi numeri. Il tipo int contiene numeri,
appunto, interi, quelli che in matematica vengono chiamati numeri naturali, e cioè senza la virgola e
parti frazionate. Qui di seguito presentiamo un pezzo di codice in cui vengono dichiarate ed
inizializzate variabili int e, per far capire come il fatto che int rappresenti i numeri naturali comporti
una certa attenzione, verrà eseguita l'operazione di divisione tra due interi (utilizzando l'operatore di
divisione / ):
int x = 7;
int y = 3;
int z;
I tipi float e double sono chiamati anche numeri in virgola mobile, cioè quelli che in matematica
vengono chiamati numeri reali, e quindi possono essere usati per contenere tutti quei numeri che
hanno parti frazionarie. La differenza tra i due sta solamente nei bit che sono riservati per la loro
rappresentazione, che si va a riflettere, non solo nel range di rappresentazione, ma anche nel
numero di cifre dopo la virgola che possono essere rappresentate, in questo caso risulta, quindi, più
accurata la rappresentazione utilizzando i double. Qui di seguito presentiamo un semplice pezzo di
codice (utilizzando i double) per far vedere come, a differenza degli int, venga rappresentata la
divisione tra due numeri in virgola mobile:
double x = 7.0;
double y = 2.0;
double z;
z = x / y ; // z vale 3.5
Da notare che la notazione usata per rappresentare la virgola è quella inglese, cioè quella in cui si
usa un punto (e non una virgola) per dividere la parte intera da quelle frazionaria.
Mentre, se avessimo utilizzato un unsigned int, i valori sarebbero stati tutti positivi, perché anche il
bit più significativo sarebbe stato usato per rappresentare il numero:
Ammesso di avere n bit per rappresentare un numero, se è signed, allora i valori possibili saranno
compresi tra -2(n-1)+1 e 2(n-1), quindi, nel caso di una rappresentazione ad 8 bit si avrebbero valori
compresi tra -127 e 128, questo perché tra i numeri entro il range deve essere considerato anche lo
zero.
Nel caso di un unsigned, invece i valori, come già detto, sono tutti positivi e possono assumere
valori compresi tra 0 e 2n - 1, ritornando al caso degli 8 bit si avrebbero valori compresi tra 0 e 255.
Casting
Quando si lavora con tipi di dati diversi tra loro, che siano primitivi (int, char, float, ecc.) od
avanzati, può essere necessario convertire valori da un tipo ad un altro. Questa operazione si chiama
casting, ad assume il nome di coercizione (coercion) quando si forza la conversione esplicita di un
tipo ad un altro tipo, conversione magari non prevista automaticamente. In C, per convertire
esplicitamente un tipo ad un altro tipo, si usa l'operatore ( ), queste parentesi tonde prendono il
nome di operatore di cast; all'interno delle parentesi bisogna mettere il nuovo tipo al quale
vogliamo passare:
reale = 47.19;
numero = (int)reale; // vale 47
ad esempio è possibile forzare la conversione di tipo dal tipo float al tipo int, o dal tipo char al tipo
int;
numero = 18;
reale = (float)numero;
lettera = 'A';
numero = (int)lettera; // vale 65, il valore ASCII di A
int primo;
int secondo;
float ris_div;
Comunque la regola dice che se si è nel dubbio bisogna sempre mettere l'operatore di cast, ovvero
bisogna sempre convertire esplicitamente i tipi. Il casting è e rimane un'operazione potente che, se
ben utilizzata, può apportare notevoli benefici ad un programma.
Tipo enumerazione
Il tipo enumerazione è abbastanza particolare, perché permette di associare a delle costanti letterali,
un valore intero; in questo modo possiamo utilizzare tali nomi per identificare il loro valore;
facciamo un esempio utilizzando i giorni della settimana:
enum giorni { lun, mar, mer, gio, ven, sab, dom } settimana;
In questo caso abbiamo definito una nuova variabile di nome "settimana" e di tipo enumerazione
"giorni"; l'identificatore "lun" assume il valore 0, "mar" assume il valore 1, e così via; in poche
parole si ha un indice iniziale "0" e gli altri assumono una numerazione progressiva. Questo ci può
essere molto utile se dobbiamo scrivere un programma che operi sui giorni della settimana (come
un calendario); se non esistesse il tipo enumerazione il programma non potrebbe assegnare alcun
"valore" ad un determinato giorno e quindi sarebbe molto più difficile (e dispendioso in termini di
codice) lavorare in tal senso.
E' possibile, però, assegnare alle costanti anche valori iniziali diversi da 0, o valori non numerici,
come spiegato nei due esempi:
La variabile "biblio" può essere dichiarata anche mettendo il nome stesso dopo la parentesi graffa:
mentre è possibile pre-inizializzare i valori, alla dichiarazione, mettendo i valori (giusti nel tipo)
compresi tra parentesi graffe:
Per accedere alle variabili interne della struttura si usa l'operatore "."; una volta che si può accedere
ad una variabile interna questa può essere trattata e/o manipolata come qualsiasi altra variabile:
In questo modo abbiamo definito un nuovo tipo di nome "t_libro", che non è altro che una struttura;
"guida" è la variabile creata di tipo "t_libro"; come per ogni altro tipo di dato, anche con "t_libro" si
possono creare degli array:
t_libro raccolta[5000];
e, per accedervi, o per inizializzare i valori, è sufficiente utilizzare l'indice per identificare
l'elemento dell'array ed il punto (.) per accedere alle variabili interne del tipo "t_libro";
Calcolatori Elettronici e
Sistemi Operativi
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: Gestione I/O
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Output
printf (<stringa di formato >[,<lista di espressioni>])
si utilizzare per visualizzare dati sullo standard output
<lista di espressioni> ::= <espressione> {, <espressione>}
sono espressioni il cui valore deve essere visualizzato
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Input
scanf (<stringa di formato> , <lista indirizzi variabili>)
consente la lettura di dati dallo standard input
<lista di indirizzi di variabili> ::= <indirizzo> {,<indirizzo>}
<indirizzo> ::= &<variabile>
<stringa di formato> (vedi printf)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Esempi di input:
ATTENZIONE
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: I puntatori
Dr. Marco Faella (Università di Napoli "Federico II”)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Puntatori
• I puntatori sono la parte più importante della
programmazione in C, quella che permette di lavorare "a
basso livello" (cioè agendo su singole istruzioni del
processore), mantenendo però una praticità unica nel suo
genere.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
// puntatore
int *puntatore;
*puntatore=10;
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Puntatori: Esempio
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S1
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
• Selezione if
if (<condizione>) <istruzioni> [else <istruzioni>]
<istruzioni> ::= <istruzione> | ‘{‘ <istruzione> {<istruzione>} ’}
esempio
if (x > 0)
y = x;
else
y = -x;
printf(“dato %d\n”, y);
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
#include <stdio.h>
#include <conio.h>
int main(){
int num1,num2;
printf("Immetti i due numeri:");
scanf("%d%d",&num1,&num2);
if (num1==num2) printf("I due numeri sono uguali");
else
if(num1>num2)printf("Il primo è maggiore”);
else printf("Il secondo è maggiore");
return 0;
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Ciclo for
Il ciclo for è indicato quando il modo più naturale per esprimere la condizione di
permanenza in un ciclo consiste nello specificare quante volte debbano essere
ripetuti l'istruzione o il blocco controllati dal ciclo.
Le forme tradizionali di ciclo for possono essere parafrasate come "ripeti (il codice
controllato) per i che va da un certo valore iniziale a un certo valore finale, con un
certo passo". i è in generale una variabile di tipo intero, detta contatore
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
#include <stdio.h>
int main(){
int i, somma = 0;
for ( i=1; i<=100; i=i+1)
somma = somma+i;
printf (“La somma vale: %d\n”, somma);
return 0;
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
• Ciclo while
while (<condizione>) <istruzioni>
#include <stdio.h>
int main(){
int n, radice = 1;
printf (“Inserire il numero:”);
scanf (“%d”, &n);
while (radice*radice <= n)
radice++;
radice--;
printf (“La radice vale %d\n”, radice);
return 0;}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
• Ciclo do..while
do <istruzioni> while (<condizione>)
Il ciclo do..while (ripeti finché) differisce dal while perchè esso garantisce che
venga eseguita sempre almeno una iterazione del ciclo. Infatti la condizione che
controlla il ciclo viene verificata dopo aver concluso la prima iterazione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S2
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
legge e addiziona dei numeri, termina quando la somma supera il valore 1000
#include <stdio.h>
int main(){
int i, somma =0, cont =0;
do{
printf (“Inserire nuovo numero:”);
scanf (“%d”, &i);
somma = somma + i;
cont++;
}while (somma <= 1000);
printf (“I numeri letti sono %d\n”,cont);
return 0;
}
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 4/S3
#lezione#
Titolo: Linguaggio C: Seconda parte
#titolo#
Attività n°: 1
#attività#
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 4/S3
Titolo: Linguaggio C: Seconda parte
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C:
Controllo del flusso e richiamo vettori
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1
• Selezione switch
<istr. switch>::=switch(<espr.>)‘{‘<istr. case>|<istr. default>’}’
<istr.case>::=case<valore intero>:{case <valore intero>:} <istr.> [break]
<istr. default>::=default <istr.>
l’istruzione switch ha delle differenze dall’if-else, infatti può essere usata solo in
alcuni casi dove:
#include <stdio.h>
int main(){
int m,n;
char operazione;
printf (“Inserire i due numeri:”);
scanf (“%d%d”, &m,&n);
printf (“Inserire l’operazione:”);
scanf (“%c”, &operazione);
switch (operazione) {
case ‘+’:
printf(“Risultato %d\n”, m+n);
break;
….continua->
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1
….continua->
case ‘-’:
printf(“Risultato %d\n”, m-n);
break;
case ‘*’:
printf(“Risultato %d\n”, m*n);
break;
case ‘/’:
printf(“Risultato %d\n”, m/n);
break;
default:
printf(“operazione non consentita\n”);
}
return 0;}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5
Titolo: Linguaggio C: Terza parte
Attività n°: 1
http://it.wikipedia.org/wiki/Malloc
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Esempio 1
Qual’è il comportamento del seguente codice C ?
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("Hello World!");
sleep(5);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Esempio 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Esempio 1
Alcune funzioni di I/O standard utilizzano il buffering
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Esempio 2
Qual’è l'output del seguente codice C ?
#include <stdio.h>
int main(void)
{
int x,y;
x=0;
y=0;
while(x=y) x=x+1;
printf("x=%d, y=%d\n",x,y);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Esempio 2
Qual’è l'output del seguente codice C ?
#include <stdio.h>
int main(void)
{
int x,y;
x=0;
y=0;
while(x==y) x=x+1;
printf("x=%d, y=%d\n",x,y);
}
Risposta: x=0, y=0
Esempio 3
Qual’è l'output del seguente codice C ?
#include <stdio.h>
int main(void)
{
int x,y;
x=0;
for(y=0; y<99; y++);
{
x = x+1;
}
printf("x=%d, y=%d\n", x, y);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S1
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Esempio 5: scanf
Qual’è il comportamento del seguente
programma?
#include <stdio.h>
int main(void)
{
int x;
char stringa[31];
printf("Inserisci un intero:");
scanf("%d", &x);
printf("Inserisci una riga di testo:");
fgets(stringa, 30, stdin);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Esempio 6: array
Qual’è l'errore in questo codice ?
#include <stdio.h>
int main(void)
{
int a[10], i;
for(i=1; i<=10; i++)
a[i] = i;
printf("a[%d]=%d\n", i, a[i]);
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Esempio 6: array
Qual’è l'errore in questo codice ?
#include <stdio.h>
int main(void)
{
int a[10], i;
for(i=0; i<=9; i++)
a[i] = i;
printf("a[%d]=%d\n", i, a[i]);
}
Esempio 7
Qual’è l'errore in questo codice ?
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *stringa;
strcpy(stringa, argv[1]);
printf("%s", stringa);
return 0;
}
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 5/S2
Titolo: Linguaggio C: Terza parte
Attività n°: 1
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2
Calcolatori Elettronici e
Sistemi Operativi
Richiami di Fondamenti di Informatica:
Il Linguaggio C: Conclusioni
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s2
Titolo: Linguaggio C: terza parte
Attività n°: 2
Al termine delle tre lezioni di richiamo al linguaggio C, ci si aspetta che lo studente sia
in grado di scrivere un programma in C, compilarlo e farlo eseguire.
Si ricorda che se lo studente ha studiato il C++, i concetti del linguaggio C sono molto
simili. Infatti, in linea di massima, il C++ include tutti gli elementi del linguaggio C.
Inoltre, il C++ è orientato agli oggetti e consente di definire tipi di dati astratti
(uso delle classi) e la gestione del polimorfismo.
Calcolatori Elettronici e
Sistemi Operativi
Il Corso in Pillole
Webinar
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 5/s3
Titolo: Linguaggio C: terza parte
Attività n°: 1
Webinar
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana: introduzione e
funzioni logiche
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6
Titolo: Algebra Booleana
Attività n°: 1
Vi sono diverse proprietà dell’algebra booleana che sono utili per manipolare
equazioni logiche:
Funzioni Logiche
Una funzione logica f = [0,1]N -> [0,1]M è definita solo sul dominio digitale (i valori
sono solo 0 ed 1) ed è completamente specificata :
oppure
La funzione logica descrive una blocco funzionale con N ingressi ed M uscite binarie.
Chiameremo questo blocco funzionale Rete Logica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana: tabelle di verità
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S1
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana
Note storiche e approfondimenti
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S2
Titolo: Algebra Booleana
Attività n°: 1
http://it.wikipedia.org/wiki/Algebra_di_Boole
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S3
Titolo: Algebra Booleana
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Algebra Booleana: : Esempi di
domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 6/S3
Titolo: Algebra Booleana
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche:
Il sistema fisico
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1
Il sistema fisico
• Si ringrazia il Prof. Giovanni Stea per il
sostanziale contributo alla realizzazione
delle slide relative al modulo di Reti
Logiche.
• Gli studenti e i tutor sono tenuti a
contattare solo il prof. Ducange, titolare
del corso, per eventuali chiarimenti sul
materiale relativo al modulo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1
Il sistema fisico
Si supponga di avere il seguente sistema fisico:
Il sistema fisico
Si supponga che un osservatore nella scatola di destra sia in grado di decidere
che:
Del sistema fisico in questione interessa solo descrivere solo questo aspetto di
trasmissione – ricezione.
Il sistema fisico
Una variabile logica è una variabile che può assumere due valori, distinti tra
loro. I due valori che una variabile logica assume vengono, per consuetudine,
codificati con i simboli ‘0’ ed ‘1’, detti anche bit o cifre binarie.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7
Titolo: Il sistema fisico
Attività n°: 1
Il sistema fisico
Più in generale, una rete logica è un modello astratto di un sistema fisico,
quest’ultimo costituito da dispositivi tra loro interconnessi. Tali dispositivi si
scambiano informazioni codificate. Le informazioni sono codificate tramite
fenomeni fisici che si presentano ad un osservatore in due aspetti distinti. Ad
esempio:
• corrente forte, corrente debole
• tensione alta, tensione bassa
• perforazione di una zona di un foglio di carta, assenza di perforazione
• magnetizzazione positiva/negativa di un’areola di materiale ferromagnetico
…
In particolare, durante il corso useremo questo tipo di modello per descrivere i
circuiti elettronici che formano i sistemi di elaborazione dell’informazione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche:
Il Sistema Fisico e descrizione funzionale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1
Del sistema fisico in questione interessa solo descrivere solo questo aspetto di
trasmissione – ricezione.
• due sottoreti, dette Tx (di trasmissione) ed Rx (di ricezione), la cui composizione interna
non mi interessa (in questo momento)
• una variabile logica w che le connette (di uscita rispetto a Tx, di ingresso rispetto ad Rx).
Una variabile logica è una variabile che può assumere due valori, distinti tra loro. I due valori
che una variabile logica assume vengono, per consuetudine, codificati con i simboli ‘0’ ed
‘1’, detti anche bit o cifre binarie.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1
• reti combinatorie: sono quelle reti in cui lo stato di uscita dipende soltanto
dallo stato di ingresso. Ad un certo stato di ingresso corrisponde uno ed un
solo stato di uscita. Analogia con il concetto di funzione matematica.
• reti sequenziali: in cui lo stato di uscita dipende dalla storia degli stati di
ingresso precedenti. Ad un certo stato di ingresso può corrispondere uno
stato di uscita od un altro, a seconda della storia passata. Queste ultime
sono reti con memoria, in quanto per decidere quale sia l’uscita hanno
bisogno di ricordare il passato.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S1
Titolo: Introduzione alle Reti Logiche
Attività n°: 1
La legge che fa corrispondere le uscite agli ingressi può essere resa operativa
in ogni istante, oppure messa in pratica ad istanti discreti nel tempo.
Nel primo caso, le uscite sono continuamente adeguate agli ingressi.
Nel secondo caso, la rete “dorme”, e “si sveglia” soltanto in certi istanti,
adeguando lo stato di uscita allo stato di ingresso presente in quei dati istanti.
Una rete logica è inserita all’interno di un mondo in cui qualcuno imposta dei valori
logici sulle variabili di ingresso e qualcun altro legge i valori logici delle variabili
d’uscita.
Quale sia l’interpretazione che viene data a tali variabili è una cosa che non ci
interessa a questo livello, al pari del fenomeno fisico con il quale l’informazione
viene scambiata.
Il modello consente quindi di astrarre dalla fisica del sistema, e dal contorno del
sistema.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche:
transizioni dei segnali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
In figura si mostra una possibile evoluzione nel tempo della variabile logica. La
variabile logica può stare soltanto in due stati, 0 ed 1, e quindi le sue transizioni
sono istantanee.
Si mostra, inoltre, anche la corrispondente variazione della tensione ad un capo del
filo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
Si stabilisce che:
• all’istante t0 la variabile logica w si setta, oppure transisce ad 1, etc.
• all’istante t1 la variabile logica w si resetta, oppure transisce a 0, etc.
Mentre in un modello astratto si può pensare che una variabile logica cambi
istantaneamente ad un dato istante, una tensione non cambia istantaneamente
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
Nei sistemi fisici che si modellano come reti logiche, il tempo per il quale le
grandezze fisiche che si modellano come variabili logiche variano è molto
minore del tempo nel quale restano a regime. Sotto questa ipotesi, un modello
in cui le variabili logiche cambiano stato in maniera istantanea, pur se
approssimato, è comunque un buon modello.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
Contemporaneità
Si consideri una semplice rete logica a due ingressi ed una uscita
Contemporaneità
Ciò che secondo me accade in ingresso Ciò che la rete potrebbe vedere
Problema:
Non si può garantire che due grandezze fisiche varino contemporaneamente.
Se, quindi, si basa un ragionamento sull’ipotesi che due variabili di ingresso
varino contemporaneamente, poi non si potrà mai costruire un sistema fisico
che verifichi questa ipotesi.
Pertanto, bisogna evitare di supporre che due variabili di ingresso varino
contemporaneamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
Contemporaneità
Non è possibile che in una realizzazione fisica di un sistema si presentino in
sequenza due stati di ingresso che differiscono tra loro per più di un bit.
Soluzione:
Nel descrivere l’evoluzione temporale di una rete asincrona, dovremo quindi
preoccuparci del fatto che gli stati di ingresso siano vincolati a cambiare un bit
alla volta. In altre parole si dovrà sempre supporre che stati di ingresso
consecutivi siano adiacenti. (adiacenti significa che differiscono di un solo
bit).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S2
Titolo: Transizioni dei segnali
Attività n°: 1
Contemporaneità
Altro problema:
I due ingressi potrebbero variare in modo molto ravvicinato nel tempo.
Potrebbe succedere che, a causa delle variazioni di impedenza dei contatti, ed
a causa del fatto che le reti non sono oggetti ideali, due transizioni troppo
ravvicinate vengano risentite dalla rete nell’ordine opposto rispetto a quello
che io penso di aver imposto.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S3
Titolo: Esempi di domande di esame:
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Logiche: Esempi
di domane di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 7/S3
Titolo: Esempi di domande di esame:
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Combinatorie:
Descrizione strutturale,
attraversamento e pilotaggio
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1
L’uscita viene aggiornata continuamente. Ciò vuol dire che la rete è sempre
sensibile a ciò che succede in ingresso.
L’uscita dipende soltanto dallo stato di ingresso presente in quel momento.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S1
Titolo: Introduzione alle Reti Combinatorie
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Combinatorie:
Descrizione funzionale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1
Descrizione funzionale
Descrizione funzionale
La descrizione funzionale può essere data in diversi modi:
La presenza di una riga in questa tabella significa che, per lo stato di ingresso
(100), in uscita è presente – a regime – lo stato di uscita (11).
Si dice che la variabile di uscita z1 riconosce gli stati di ingresso (010), (011),
(100), (101), e che la variabile di uscita z0 riconosce (001), (100), (101).
Ovviamente, nella parte sinistra della tabella ci devono essere tutti i possibili
stati di ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S2
Titolo: Descrizione funzionale
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Esempi di domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 8/S3
Titolo: Esempi di domande di esame
Attività n°: 1
• Descrivere l'inverter.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Elementari
Reti a zero ed un ingresso
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1
Sono reti senza ingressi con una uscita che assume valore 1 o valore 0.
Dal punto di vista fisico, si realizzano connettendo l’uscita alla tensione di
riferimento VCC (1) o a massa (0).
Quindi sono “reti” per modo di dire. Basta un filo connesso ad una tensione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1
Reti ad un ingresso
Inverter:
Reti ad un ingresso
Elemento Neutro:
Serve a:
• a generare ritardo (utile per le temporizzazioni)
• a rigenerare i segnali elettrici degradati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9
Titolo: Reti a zero ed un ingresso
Attività n°: 1
Reti ad un ingresso
Generatori di costanti
Sono due casi degeneri di reti che generano in uscita sempre uno o sempre
zero. Attenzione, in questo caso accettano degli ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Elementari:
Porte AND, XOR. NAND, OR, NOR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S1
Titolo: Porte AND, XOR. NAND, OR, NOR
Attività n°: 1
Porta AND
x0 x1 z
0 0 0
0 1 0
1 0 0
1 1 1
Porta XOR
x0 x1 z
0 0 0
0 1 1
1 0 1
1 1 0
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Elementari
Esempi a più ingressi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1
0 0 0 0 0
0 0 1 0 0
Y 0 1 0 0 0
0 1 1 0 0
1 0 0 0 0
1 0 1 0 0
1 1 0 1 0
1 1 1 1 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1
Il numero di porte AND utilizzato è lo stesso (3), ma nel secondo caso il segnale
di ingresso deve attraversare 2 livelli di logica invece di 3. Quindi, il tempo di
attraversamento della seconda rete è minore del tempo di attraversamento
della prima.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S2
Titolo: Esempi di reti a più ingressi
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
• Esistono in commercio reti, realizzate dal punto vi vista elettronico, con piu di
due ingressi?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S3
Titolo: Reti Combinatorie Elementari
Attività n°: 1
Soluzione: Mettere più porte XOR in cascata (eventualmente ad albero) consente di fare
circuiti che riconoscono stati di ingresso con un numero dispari (pari) di 1 (dimostrare
per induzione sul numero di livelli dell’albero).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 9/S3
Titolo: Reti Combinatorie Elementari
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative: il decoder
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1
Il Decoder
Si consideri l'uscita z2
Come si puo notare, nella figura a sinistra ci sono 4 inverter, mentre in quella
a destra ci sono solo due inverter.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10
Titolo: Il Decoder
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative:
il decoder espandibile
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S1
Titolo: il decoder espandibile
Attività n°: 1
Il Decoder espandibile
Il Decoder espandibile
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative:
Demultiplexer e Multiplexer
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1
Demultiplexer (Demux)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1
Demultiplexer (Demux)
Da un semplice esercizio (che si invita gli studenti a svolgere),
si ha che la tabella di verità del demultiplex risulta essere:
Multiplexer (Mux)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1
Per ogni riga j della tabella di verità, se l’uscita vale 1 attacco l’ingresso xj a Vcc,
altrimenti lo attacco a massa.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S2
Titolo: Reti Combinatorie Significative
Attività n°: 1
Se segue che:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Combinatorie Significative
Esempi domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 10/S3
Titolo: Reti Combinatorie Significative
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Un po’ di nomenclatura:
• forma SP perché l’uscita z è ottenuta come somma di prodotti
• forma canonica perché ogni prodotto contiene tutti gli ingressi diretti
o negati
• ciascuno dei termini della somma si chiama mintermine, e
corrisponde ad uno stato di ingresso riconosciuto dalla rete.
Una rete in forma canonica SP non è detto che sia a costo minino. Spesso è
possibile ottenere delle reti descritte sempre in forma SP a costo ridotto.
Si può ottenere infatti una descrizione, sempre in forma SP, fatta da una lista
degli implicanti.
Ciascun termine di questa lista è detto implicante.
Mappe di Karnaugh
Le mappe di Karnaugh sono un altro modo di rappresentare le leggi combinatorie,
che presenta alcuni vantaggi rispetto alle tabelle di verità, soprattutto quando si
deve cercare la sintesi di costo minimo.
Una mappa di Karnaugh per una rete ad N ingressi è una matrice di 2N celle
multidimensionali.
Ciascuna cella contiene il valore della variabile di uscita per un particolare stato di
ingresso.
Importantissimo:
Le mappe di Karnaugh vanno immaginate disegnate su superfici “sferiche”.
Ciò che si trova all’estrema destra è contiguo a ciò che si trova all’estrema
sinistra. Ciò che si trova all’estremo superiore è contiguo a ciò che si trova
all’estremo inferiore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Il difetto delle mappe di Karnaugh è che non è possibile mettere più di due
variabili su un asse mantenendo la proprietà vista sopra (cioè che tutte e
sole le celle le cui coordinate differiscono per un bit siano adiacenti sulla
mappa
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: Sottocubi e implicanti
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Mappe di Karnaugh
Qualche definizione:
• Sottocubo di ordine 1: una casella che contiene un 1, corrispondente quindi ad
uno stato di ingresso riconosciuto dalla rete.
• Coordinate di un sottocubo di ordine 1: valore dello stato di ingresso che
corrisponde al sottocubo
• Adiacenza tra sottocubi di ordine 1: due sottocubi di ordine 1 si dicono
adiacenti se differiscono tra loro per una sola coordinata (avendo le altre N-1
coordinate identiche).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Mappe di Karnaugh
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Mappe di Karnaugh
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Mappe di Karnaugh
Si può, ovviamente, iterare il ragionamento per costruire sottocubi di ordine 4 (ed
eventualmente più grandi, anche se non con questo esempio).
• Ad esempio, i sottocubi C ed F, entrambi di ordine 2, sono adiacenti.
• Quindi fondono a generare un sottocubo di ordine 4, che chiamiamo H. Anche C e D
fondono per generare un sottocubo di ordine 4, il sottocubo G.
• I sottocubi G ed H coprono tutti gli stati riconosciuti dalla rete.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Mappe di Karnaugh
Altre definizioni:
• Sottocubo principale: un sottocubo tale per cui non esiste nessun sottocubo
più grande che lo copre completamente. Nell esempio precedente, G ed H
sono sottocubi principali.
• Lista di copertura: insieme (qualunque) di sottocubi che coprono tutti i sottocubi
di ordine 1, che includono, cioè, tutte le caselle della mappa che contengono un
1. G ed H sono una lista di copertura.
• Lista di copertura irridondante: tale che se viene rimosso un sottocubo non è
più una lista di copertura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Mappe di Karnaugh
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
L’algoritmo termina sicuramente, perché male che vada avrò bisogno dei sottocubi di
ordine 1 per coprire l’intera mappa.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
In questo caso, non mi bastano i tre sottocubi di ordine 4 A,B,C, perché resta
scoperto uno stato riconosciuto dalla rete (0100). Devo considerare anche tutti i
sottocubi di ordine 2, tranne quelli già coperti da sottocubi di ordine 4. Quindi
devo aggiungere anche D. In questo modo ottengo la lista degli implicanti
principali.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Continua…
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
…continua
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
…continua
…continua
L’algoritmo è il seguente: si parte dalla mappa di Karnaugh sulla quale si sono
disegnati gli implicanti (i sottocubi) principali e si nota quanto segue:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
…continua
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S1
Titolo: Sintesi con Mappe di Karnaugh
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: sintesi a costo minimo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S2
Titolo: sintesi a costo minimo
Attività n°: 1
La prima parte del documento mostra come effettuare la ricerca delle liste di
copertura non ridondanti, con un esempio completo di sintesi di rete logica con
mappe di Karnaugh.
La seconda parte mostra un esempio di sintesi di rete logiche in cui esistono dei
valori degli ingressi a cui non sono associati delle uscite (uscite non specificate).
10 1
Finché ho sottocubi semplicemente eliminabili, vado avanti tenendo conto di tutti i possibili
scenari. Ad ogni nuovo passo, formulo due nuove ipotesi relativamente ad un sottocubo
semplicemente eliminabile. Partendo dal cuore della mappa, posso creare un albero di decisioni
binario, alle foglie del quale ci sono tutte le possibili liste di copertura non ridondanti. Tra tutte
queste, sceglierò quella di costo minimo.
Nel nostro caso, proviamo a prendere in esame il sottocubo B:
x3x2 x3x2
x1x0 00 01 11 10 x1x0 00 01 11 10
A A
00 1 00 1
C C
01 1 B 1 1 01 1 1 1
D D
11 1 1 11 1 1
10 1 10 1
{ A, D, B} + x2 ⋅ x1 ⋅ x0
{ A, D} z = x3 ⋅ x2 + x3 ⋅ x2 ⋅ x0
{ A, D, C} + x3 ⋅ x1 ⋅ x0
La lista di copertura di costo minimo si ottiene confrontando tutte le possibili realizzazioni ottenute
in questa maniera, usando il criterio a diodi o a porte. Nel nostro caso, sono del tutto equivalenti.
00 1 00 1
E E
01 1 B 1 01 1 B 1
C C
A A
11 1 1 11 1 1
10 F 1 1 1 10 F 1 1 1
00 1
00 1
{ A, E}
E
01 1 1
01 1 B 1 { A}
B
C
A
{ A, C , B}
A 11 1 1
11 1 1
10 F 1 1 1
10 F 1 1 1
Andiamo avanti secondo la prima ipotesi, cioè che E sia essenziale (figura di sinistra). Tolto C, non
ho più implicanti assolutamente eliminabili. Devo quindi fare un’altra ipotesi. La faccio su D.
- se D è essenziale, B ed F sono assolutamente eliminabili
- se D è assolutamente eliminabile, B ed F sono essenziali
In entrambi i casi, ho trovato una lista di copertura.
{ A, E , D}
{ A, E}
{ A, E , B, F }
{ A}
{ A, C , B}
Mettiamoci nella seconda ipotesi, cioè che il cuore della mappa sia A, C, B. A questo punto, se D è
essenziale, F è assolutamente eliminabile e viceversa.
{ A, E , D}
{ A, E}
{ A, E , B, F }
{ A}
{ A, C , B, D}
{ A, C , B}
{ A, C , B, F }
A questo punto, ho tutte le liste di copertura non ridondanti per la mappa (le foglie dell’albero
binario). Tra queste, c’è la lista di costo minimo. Per trovare quale sia, devo applicare il criterio di
costo. In questo caso particolare, ho B, C, D, E, F che hanno tutti lo stesso costo (sono infatti
sottocubi dello stesso ordine), quindi si vede subito che la lista di copertura di costo minimo è {A,
E, D}.
Quindi:
z = x3 ⋅ x1 + x2 ⋅ x1 ⋅ x0 + x3 ⋅ x2 ⋅ x0
x3
x2
x1
x0
v3 v2 v1
z
OR
Quella scritta sopra è la realizzazione di costo minimo per la rete la cui tabella di verità abbiamo
scritto all’inizio.
Osservazione: Dove è che intervengono i criteri di costo (a porte o a diodi)? Nello scegliere quale,
tra tutte le liste di copertura non ridondanti trovate, sia quella di costo minore. Quindi, il
procedimento per trovare le liste di copertura non ridondanti è identico, quale che sia il criterio di
costo.
Data una rete con N ingressi, e scelta una realizzazione con N s sottocubi, ciascuno di dimensione
- costo a porte: CP = N s + 1
N
- (
costo a diodi: CD = N s + ∑ j =S1 N − log 2 D j )
Osservazione: Il risultato finale non dipende da quale sottocubo si considera volta per volta ad
ogni passo dell’algoritmo. In tutti i casi, verranno prodotte tutte le possibili liste di copertura non
ridondanti. Si deve, però, stare attenti, a far sì che ad ogni passo non si generino liste non
ridondanti. Ad esempio:
E
{ A, C , E}
{ A, C}
C
{ A}
~C
{ A, E}
In questo caso non posso inserire E dopo aver inserito C, altrimenti ottengo una lista ridondante.
Sintesi di leggi non completamente specificate –
Un decodificatore BCD a 7 segmenti è una rete che ha 4 variabili di ingresso, che vanno
interpretate come la codifica in base 2 di una cifra decimale, e produce 7 uscite, che vanno ad
accendere i segmenti di un display a cristalli liquidi che illumina la cifra data in ingresso.
zG A
zF F B
x3 G
zE
x2
BCD Decoder zD
x1 E C
zC D
x0
zB
zA
BCD sta per Binary Coded Decimal, ed è un modo per rappresentare i numeri naturali (ne
vedremo altri quando parleremo di aritmetica), tipico delle calcolatrici tascabili con display LCD.
Con tale tipo di rappresentazione, ciascuna cifra decimale viene rappresentata su 4 bit.
Abbiamo visto che la sintesi a costo minimo per una rete con M uscite si affronta un’uscita alla
volta. Prendiamo a riferimento l’uscita zE, e sintetizziamo la rete di costo minimo che la realizza.
J x3 x2 x1 x0 zE x3x2
0 0 0 0 0 1 x1x0 00 01 11 10
1 0 0 0 1 0
2 0 0 1 0 1 00 1 0 - 1
3 0 0 1 1 0
4 0 1 0 0 0
01 0 0 - 0
5 0 1 0 1 0
6 0 1 1 0 1
7 0 1 1 1 0 11 0 0 - -
8 1 0 0 0 1
9 1 0 0 1 0
? 1 0 1 0 - 10 1 1 - -
? 1 0 1 1 -
? 1 1 0 0 -
? 1 1 0 1 -
? 1 1 1 0 -
? 1 1 1 1 -
Si vede subito che non mi interessa cosa succeda quando in ingresso si presenta uno stato che
codificherebbe un numero naturale >9, in quanto nelle ipotesi di funzionamento gli unici stati di
ingresso possibili sono quelli relativi a cifre da 0 a 9. Quindi, non ha senso chiedersi quanto valga
l’uscita, o meglio, non ha senso volerlo decidere adesso. Mi riservo di assegnare all’uscita il
valore che più mi converrà, nell’ottica di ottenere la rete di costo minimo. Per dire questo, metto
nella tabella di verità, e nella mappa di Karnaugh che le corrisponde, un non specificato.
Vediamo come si affronta la sintesi in questo caso.
x3x2
x1x0 00 01 E 11 10
Ricerca degli implicanti principali:
considero i valori non specificati come degli 00 1 0 - 1 C
1, in quanto mi fa comodo ottenere implicanti A
più grandi.
01 0 0 - 0
Ce la faccio con 5 implicanti di ordine 4,
proprio grazie al fatto di aver considerato i B
11 0 0 - -
non specificati come 1.
D
10 1 1 - -
x3x2
x1x0 00 01 E 11 10
Ricerca degli implicanti essenziali: mi
preoccupo di riconoscere soltanto gli stati 00 1 0 - 1 C
effettivamente corrispondenti ad un 1 (che è A
zE = x2 ⋅ x0 + x1 ⋅ x0
x2
AND zE
x0 OR
AND
x1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S3
Titolo: Esempi di domande di esame:
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di reti logiche combinatorie con
mappe di Karnaugh: Domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 11/S3
Titolo: Esempi di domande di esame:
Attività n°: 1
Scaricare i file es1.pdf ed es2.pdf come esempio per gli esercizi. Nel file es2, ignorare
il punto 2.
http://unielettronica.altervista.org/materiale/elettronica/pdf001.pdf
http://fermi.mo.it/~loar/mysito/DownLoad/elettronica3/Le%20Mappe%20di%20Karnaugh.pdf
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Porte Logiche Universali
Sintesi a porta Nand e Nor
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1
A destra si mostra la procedura per ottenere una sintesi a sole porte NAND
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1
Data una sintesi SP di un circuito, la sintesi a porte NAND che gli corrisponde ha lo
stesso costo, sia a diodi che a porte (nel costo non si contano gli invertitori sugli
ingressi)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1
A destra si mostra la procedura per ottenere una sintesi a sole porte NOR
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12
Titolo: Sintesi a porta Nand e Nor
Attività n°: 1
Data una sintesi SP di un circuito, la sintesi a porte NOR che gli corrisponde ha lo
stesso costo, sia a diodi che a porte (nel costo non si contano gli invertitori sugli
ingressi)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Porte Logiche Universali:
Esercizio completo di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S1
Titolo: Esercizio di esame completo
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Porte Tri-state
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1
Porte Tri-state
In molti casi, fa comodo poter connettere insieme le uscite delle reti.
Ad esempio, in figura a sinistra si mostra un bus condiviso, su cui possono
connettersi le uscite di reti diverse e impostare ad un dato valore. Ovviamente,
non lo possono fare contemporaneamente, ma dovranno fare a turno.
Nella figura di destra, si mostra un esempio di linee che servono, in tempi
diversi, come ingressi ed uscite ad una data rete (ad esempio, le linee dati
rispetto alla memoria RAM).
Poiche le reti logiche sono dei circuiti elettronici, ci potrebbero essere dei
problemi elettrici quando si collegano fra loro due o più uscite.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1
Porte Tri-state
In figura si mostra un modello elettrico semplificato, ma ragionevole, di cosa
succede su un’uscita: un’uscita è un generatore di tensione in serie ad una
piccola resistenza.
Porte Tri-state
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1
Porte Tri-state
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1
Porte Tri-state
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1
Porte Tri-state
Fin qui si è visto cosa succede quando ci sono due uscite connesse sulla stessa
linea. In realtà, ce ne potrebbero essere più di due. In quel caso, il problema
peggiora: che succede se N-1 valgono 0 ed 1 vale 1? Qual è il livello elettrico in
uscita? Potrò mai garantire che i livelli elettrici siano sempre corretti, quale che sia la
configurazione delle uscite?
Per poter gestire configurazioni del genere, è necessario disporre di apparati capaci
di disabilitare le uscite, cioè di disconnettere fisicamente un’uscita da una linea
condivisa. Tali apparecchi prendono il nome di porte tri-state.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 12/S2
Titolo: Porte Tri-state
Attività n°: 1
Porta tri-state
Porta tri-state
Esempio: multiplexer decodificato
Porta tri-state
Esempio: rete con linea di ingresso-uscita
Si supponga che la variabile d sia utilizzata sia come ingresso sia come uscita
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi a porte NAND (NOR) e porte tri-state:
Domande di esame
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S2
Titolo: Porte Logiche Universali
Attività n°: 2
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Didattica Interattiva: Mappe Concettuali
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S3
Titolo: Porte Logiche Universali
Attività n°: 1
Mappe Concettuali
Si invita lo studente a realizzare una mappa concettuale che sintetizzi la tematica relativa
alle reti combinatorie.
Per maggiori informazioni su come realizzare mappe concettuali e su come utilizzare gli
appositi strumenti messi a disposizione dalla piattaforma di studio di invita lo studente a
consultare la guida dello studente e/o contattare il proprio TOL.
In allegato alla presente sessione di studio, lo studente può trovare un estratto del
manuale eCampus che introduce le mappe concettuali e lo strumento CMAP.
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 12/S3
Titolo: Porte Logiche Universali
Attività n°: 1
Mappe Concettuali
DEFINIZIONE
Una mappa concettuale è uno strumento per rappresentare le conoscenze.
Tali conoscenze devono essere ordinate in modo gerarchico, per rispecchiare in parte il modo in cui le
conoscenze stesse vengono immagazzinate nella nostra mente.
UTILIZZO DELLE MAPPE CONCETTUALI
Una mappa concettuale non dovrebbe essere utilizzata allo scopo di elencare o esplorare possibili contenuti,
ma con la funzione di illustrare i rapporti esistenti tra i concetti.
Nel caso la costruzione di una mappa concettuale proceda di pari passo con l’apprendimento di un dato
argomento, allora essa subirà profonde mutazioni nel tempo, che rispecchieranno i cambiamenti della
struttura cognitiva del soggetto che apprende.
ELEMENTI DI BASE
A. CONCETTI
Un concetto può essere formato da una singola parola, o anche da una serie di parole; può anche
comprendere alcuni attributi che lo connotano.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
364
APPENDICE 7
I concetti possono essere di due tipi: concetti oggetto (fiore, storia, legge…) e concetti evento (rivoluzione,
eclissi, arrugginimento…). Ogni concetto compare una sola volta in una mappa concettuale.
B. FRASI LEGAME
Le frasi legame contengono in genere predicati che esprimono denotazione, azione, consequenzialità -
dipendenza (logica, temporale, mezzo-fine), appartenenza, articolazione, esemplificazione, ecc. Ciascuna di
tali relazioni individua un concetto più sovraordinato, generale o inclusivo, e un concetto a questo
subordinato. Dalle frasi legame sono escluse domande, avversative, pronomi relativi.
Le parole concetto possono entrare a far parte delle frasi legame solo se sono concetti molto ricorrenti e
inclusivi, o se non appartengono al contesto della mappa. (es. inserire la parola “numero” in una mappa
concettuale sui numeri).
C.CARATTERISTICHE
Le frecce si aggiungono solo nei casi in cui una proposizione deve essere letta in direzione orizzontale,
leggermente obliqua o dal basso verso l’alto (per evitare ambiguità ). Un singolo concetto può essere
collegato a più concetti. Poiché ogni relazione va letta dall’alto in basso, dovrà esistere un concetto più
inclusivo di tutti gli altri: il c.d. concetto radice, che si troverà al vertice della struttura piramidale.
Dal concetto radice si diramano le proposizioni con i concetti di primo livello e da questi si procede verso il
basso ampliando la struttura ad albero del secondo livello e dei successivi, con concetti via via sempre più
specifici e subordinati.
D. CRITERI SU LARGA SCALA
1. Sviluppare una mappa tenendo conto di una chiave interpretativa o di una domanda focale precisa;
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
365
APPENDICE 7
2. iniziare a valutare la presenza di concetti più comprensivi di quelli relativi alla domanda focale, che
potrebbero essere utili a inquadrare il contesto e i presupposti per dare senso e autonomia di significato
all’intera struttura;
3. limitare lo sviluppo gerarchico ai livelli strettamente necessari a rispondere alla domanda focale e non
introdurre ulteriori legami arbitrari o di tipo associativo con altri concetti superflui.
E. CRITERI SU LARGA SCALA
4. Se ci sono molti concetti di primo livello, legati al concetto radice (quello al vertice), occorre individuare
altri concetti di livello gerarchico intermedio, per raggrupparli in due-quattro categorie al massimo, quindi
sviluppare in modo bilanciato tali categorie.
5. I collegamenti trasversali, proposizioni tra concetti distanti nella mappa, indicano processi di integrazione
della struttura cognitiva – se non se ne abusa. Un numero eccessivo di collegamenti trasversali rende
semplicemente intricata la mappa, pertanto vanno usati solo per chiarire connessioni “rivelatrici” all’interno
della materia trattata.
6. Nel caso di argomenti molto vasti, frazionare la mappa in più sezioni (anche diversificate per colore). Se
ciascuna sezione deve essere strutturata in dettaglio, si consiglia di costruire delle mappe concettuali
distinte e collegate da legami ipertestuali tra loro o a una mappa – indice, creando quello che viene chiamato
Modello di Conoscenza (KM); oppure delineare la sola ossatura dell’argomento complessivo in una singola
mappa.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
366
APPENDICE 7
F. CRITERI SU PICCOLA SCALA
7. Scegliere le parole più semplici possibili per i concetti e non scrivere interi periodi, contenenti più
concetti, in ciascun nodo. Evitare anche l’errore opposto di frammentare il testo piano in tanti nodi quante
sono le parole, ricordando che ogni nodo deve contenere un singolo concetto rilevante.
9. Se ci sono più concetti accomunati dallo stesso tipo di relazione, rispetto a un concetto più comprensivo,
evitare di concatenarli con “e”, come si farebbe nel testo normale; collegarli, invece, tutti alla stessa frase
legame, parallelamente e al di sotto del concetto più inclusivo. In alternativa, se tali concetti si trovano in
posizione terminale, si possono elencare tutti in un singolo nodo.
10. Per quanto possibile costruire relazioni binarie dotate di senso compiuto (“coerenti”), evitando gerundi,
pronomi relativi e congiunzioni che richiedano di estendere i periodi secondo una lettura testuale obbligata.
Occorre rileggere ogni proposizione come a sé stante.
Le frasi-legame non devono contenere concetti che potrebbero avere funzione nodale nella struttura della
mappa, ma solo quei termini necessari a fungere da collegamento (verbi, preposizioni, articoli ecc.)
11. Non inserire lo stesso concetto in diverse regioni nella mappa, anche se con etichette diverse (si può fare
eccezione a questa regola per concetti molto comprensivi, e per questo ricorrenti, o per attributi).
Eventualmente accorpare nello stesso nodo i diversi termini denotativi e connotativi (es. <imperatore Carlo
Magno>)
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
367
APPENDICE 7
INSTALLAZIONE DI CMAP
Per partecipare alle e-tivities inerenti C-MAP, è necessario installare nel dispositivo personale la relativa
applicazione, selezionando (gratuitamente) il download necessario dall’indirizzo:
http://cmap.ihmc.us/cmaptools/cmaptools-download/.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
368
APPENDICE 7
Effettuata la registrazione, occorre cliccare sul download desiderato (per es. Windows (32 bits)) e poi sul
tasto ‘Esegui’.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
369
APPENDICE 7
Al termine del download parte automaticamente il wizard per l’installazione del client:
Cliccare su NEXT per continuare, poi occorre accettare le condizioni della licenza e scegliere l’installazione
tipica.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
370
APPENDICE 7
Infine, occorre accettare tutte scelte fino ad arrivare alla schermata seguente, cliccando sul tasto ‘Done’:
- se studente, coincidente con il proprio numero di matricola. In tutto devono essere nove cifre, occorre
ricordarsi di includere anche gli zeri;
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
371
APPENDICE 7
e una Password, da impostare uguale a quella usata per accedere alla propria Area Riservata del Portale di
Ateneo, sia per lo studente che per il Docente.
Per la condivisione remota delle mappe è necessario aggiungere, alla lista dei Server Cmap presente di
default, il Server Cmap Uniecampus; quindi, cliccando su “Cmap in rete”, poi su “Aggiungi Sito”,
Selezionare “Aggiungi un sito che non fa parte della lista” e utilizzare i seguenti dati:
REDIGERE ELABORATI CON CMAP
1. AVVIO DI CMAP
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
372
APPENDICE 7
Eseguendo l’applicazione si aprirà la finestra Viste – CmapTools che non deve essere chiusa finché si lavora
con CmapTools.
2. CREAZIONE MAPPA
Cliccare sull’icona del server “Uniecampus”, selezionare la cartella dell’esercitazione e, all’interno di questa,
andare su File-Nuova Cmap per aprire l’editor delle mappe.
3. CREARE NODI E CONCETTI
Per creare il primo nodo fare un doppio clic in un punto qualsiasi della finestra ‘Nuova Cmap’ e scrivere
direttamente il primo concetto.
Per creare un secondo nodo, collegato al primo, portarsi con il puntatore sulle frecce e trascinare il mouse in
un punto qualsiasi della finestra. Rilasciare il tasto.
Per compilare il testo di concetti e frasi legame, fare doppio clic sui punti interrogativi e digitare il testo.
4. COLLEGARE I CONCETTI
E possibile collegare concetti creati precedentemente:
• creare i nodi “concetti” e “relazioni” (come detto prima con doppio clic in un punto qualsiasi della
finestra);
5. COLLEGARE UN CONCETTO AD UNA RELAZIONE
Quando si crea un collegamento non orizzontale dall’alto verso il basso, Cmap automaticamente creerà una
freccia. E possibile anche creare il collegamento da una relazione ad un nodo; ciò può servire ad evitare di
ripetere la stessa relazione per due o più concetti collegati ad uno stesso nodo.
6. CANCELLARE UN CONCETTO O UNA RELAZIONE
Per cancellare un nodo (o una relazione) fare un click con il tasto sinistro del mouse su di esso e premere da
tastiera il tasto Canc.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
373
APPENDICE 7
NB. Se si elimina la relazione i nodi non vengono eliminati; se invece si elimina il concetto verrà eliminata
anche la relazione corrispondente
7. SPOSTARE UN CONCETTO O UNA RELAZIONE
Per spostare un nodo o una relazione è sufficiente selezionarli con il tasto sinistro e trascinarli, cosı̀ anche la
linea di collegamento si sposterà (ma non i concetti e le relazioni collegati).
Per selezionare e spostare anche più oggetti: è sufficiente cliccare su un punto dello schermo vicino ai
concetti da selezionare e trascinare il mouse, creando un rettangolo che includa tutti gli oggetti.
Per selezionare tutti gli elementi dello stesso tipo scegliere le opzioni corrispondenti nel menu Modifica,
scegliere invece “Seleziona tutto” se si vuole selezionare tutta la mappa.
8. SALVARE UNA MAPPA
Si può salvare una mappa scegliendo dal menù FILE le opzioni: Salva Cmap o Salva Cmap Come… .
NB: Le mappe possono essere aperte, semplicemente facendo doppio clic sulla loro icona.
9. ESPORTARE UNA MAPPA COME IMMAGINE PDF O COME PAGINA WEB
E possibile esportare una mappa in un’immagine selezionando dal menu File l’opzione Esporta Cmap
come… e nella finestra che si apre scegliere Immagine (o pagina web o PDF).
Le mappe salvate come immagine non possono essere più modificate con C-map.
Il salvataggio come Pagina web si utilizza di solito per consentire la visualizzazione della mappa anche a chi
non possiede Cmap.
MODIFICA DELLE MAPPE
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
374
APPENDICE 7
1. LA FINESTRA STILI
Quando si apre il file, contemporaneamente alla mappa si apre la finestra “Stili”; oppure si può aprire tale
finestra scegliendo l’opzione Stili dal menu Formato.
- Carattere, per la scelta del font, della dimensione, del colore, allineamento…
- Oggetto, dove puoi scegliere la forma, il colore, l’ombreggiatura ecc. dei nodi e dei riquadri contenenti le
relazioni;
- Linea, per la scelta del formato delle linee di connessione e delle linee di contorno degli oggetti (colore,
spessore, forma, verso della freccia);
2. INSERIRE RISORSE IN UNA CMAP
In una CMap è possibile inserire diverse risorse, tra cui:
* file video;
* immagini;
* altre Cmap;
* file audio;
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
375
APPENDICE 7
* presentazioni;
* pagine web;
* file eseguibili.
In tal modo una mappa può diventare la struttura base per un ipertesto o un ipermedia.
Le risorse possono essere inserite sia direttamente, mediante trascinamento nei nodi o nelle frasi legame
delle mappe, sia importandole mediante il comando Aggiungi risorse del menu File.
Rilasciando il tasto del mouse si aprirà la finestra Modifica Collegamento alle Risorse con un modulo di
informazioni.
N.B. :E possibile sia salvare le risorse che creare un collegamento senza importarle nelle cartelle di
destinazione di Views (in tal caso spuntare la casella relativa).
3. AGGIUNGERE/MODIFICARE LE RISORSE.
Per modificare le risorse già inserite nella CMap o per aggiungerne altre si può , dopo aver cliccato sul nodo a
cui si vogliono aggiungere/modificare Risorse, scegliere dal Menu Modifica della Cmap aperta l’opzione
Aggiungi/ Modifica Collegamenti a Risorse……
Ricordarsi, dopo aver modificato una risorsa, di cliccare su Aggiorna per salvare le modifiche.
4. CANCELLARE, SPOSTARE O COPIARE UNA RISORSA.
Cliccare con il tasto destro del mouse sulla risorsa e selezionare Elimina, copia o taglia.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
376
APPENDICE 7
Per eliminare una risorsa è possibile anche intervenire dalla finestra Aggiungi/modifica Risorse.
5. COLLEGAMENTO AD ALTRE MAPPE.
E possibile inserire un collegamento ad un’altra mappa come si inserisce qualsiasi risorsa.
Quando una mappa è molto complessa è possibile spezzarla in due e poi unirle attraverso una frase legame.
E sufficiente trascinare il nodo di una mappa su quello dell’altra (dopo avere visualizzato entrambe le
mappe) e completare la frase legame.
6. INSERIRE COLLEGAMENTI A PAGINE WEB.
Se la risorsa da inserire è collegamento a una pagina di Internet si deve selezionare, dalla finestra Views,
l’opzione Aggiungi Pagina Internet.
Si può mettere il collegamento alla pagina web sul nodo della mappa come visto per le altre risorse.
7. AGGIUNGERE/INSERIRE INFORMAZIONI.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
377
APPENDICE 7
E possibile aggiungere delle informazioni ai concetti: cliccare sul concetto scelto con il tasto destro del
mouse e scegliere l’opzione Aggiungi Informazioni (saranno visibili al passaggio del mouse).
Per inserire un’annotazione, cliccare in un punto qualsiasi della Cmap o su un concetto con il tasto destro del
mouse e nella finestra che appare scegliere Annotazione cliccando con il tasto sinistro . Si aprirà la finestra
Annotazione in cui sarà possibile inserire un commento.
Si sottolinea che l’annotazione non è legata al concetto ma può essere spostata in vari punti della mappa;
inoltre, lo strumento Annotazione può essere utile sia in una costruzione collaborativa di mappe sia al
docente per inserire commenti alla mappa degli studenti.
VISUALIZZAZIONE DI MAPPE GIÀ PUBBLICATE SUL SERVER REMOTO
E possibile apportare modifiche alla mappa: quando si proverà a salvare le modifiche, verrà richiesto di
inserire ID e Password.
Se ci si autentica sarà possibile salvare le modifiche alla mappa sul server remoto; se invece non si
posseggono i diritti di modifica, sarà possibile solo salvare la mappa sul computer locale.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
378
APPENDICE 7
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
379
APPENDICE 7
PUBBLICAZIONE DI UNA MAPPA SUL SERVER REMOTO
A) CREAZIONE DELLA CARTELLA:
* selezionare dalla finestra Viste l’opzione Cmap in rete;
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
380
APPENDICE 7
B) IMPOSTARE LE AUTORIZZAZIONI.
Per poter impostare quali dei propri studenti deve poter accedere ad una determinata cartella/mappa è
necessario cliccare col destro sulla cartella/mappa e successivamente sulla voce Autorizzazioni. In seguito
tramite la voce “I miei studenti” presente all’interno della propria “Area riservata” è possibile ottenere il
numero di matricola di ogni studente, tale numero sarà necessario per effettuare la ricerca dello studente a
cui si vorrà garantire un determinato tipo di accesso (amministratore, sola lettura etc….).
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
381
APPENDICE 7
C) CREAZIONE DI UN NUOVO UTENTE:
- selezionare Aggiungi Utente.
D) SALVARE LA MAPPA SUL SERVER REMOTO:
E sufficiente trascinare la mappa, precedentemente creata, dalla cartella locale a quella creata sul server
remoto.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
382
APPENDICE 7
Quando la mappa viene salvata sul server, automaticamente viene pubblicata come pagina HTML
all’indirizzo che si trova alla base della mappa. La mappa è cosı̀ raggiungibile e visualizzabile da qualsiasi
browser.
E) MODULO REGISTRAZIONI.
E possibile registrare le fasi di costruzione di una mappa ed è l'ideale per porre l’attenzione sul processo di
costruzione delle mappe concettuali:
F) STRUMENTI DI COLLABORAZIONE.
Permettono di:
* condividere idee, fare commenti, e commentare criticamente le mappe degli altri studenti;
G) COLLABORAZIONE SINCRONA.
Attraverso gli strumenti di collaborazione sincrona è ovviamente possibile che più utenti condividano
contemporaneamente la stessa mappa e collaborino/cooperino alla costruzione della stessa, utilizzando
anche una chat per dialogare e concordare il lavoro in corso.
© 2007-2014 Università Telematica eCampus - Sistemi Informativi di Ateneo - Via Isimbardi 10 - 22060 Novedrate (CO)
C.F. 08549051004 - Tel: 031/7942500-7942505 Fax: 031/7942501 - info@uniecampus.it
383
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Sequenziali
Asincrone
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13
Titolo: Introduzione
Attività n°: 1
Le reti logiche viste fin ora sono di tipo combinatorio e non sono
dotate di memoria.
Questo significa che lo stato di uscita dipende solamente dallo stato
in ingresso alla rete stessa.
Il flip flop SR
In figura (b) si mostra la tabella di transizione del FF-SR mostrato in figura (a).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione alle Reti Sequenziali Asincrone:
Concetti Principali e Descrizione Formale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Le reti logiche viste fin ora sono di tipo combinatorio e non sono
dotate di memoria.
Questo significa che lo stato di uscita dipende solamente dallo stato
in ingresso alla rete stessa.
Il flip flop SR
In figura (b) si mostra la tabella di transizione del FF-SR mostrato in figura (a).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Si associa:
• al nome S0, lo stato in cui il FF SR memorizza il bit 0 (e lo presenta in
uscita)
Ora, si può osservare che, per quanto appena detto, la prima riga della tabella si legge come:
“se sono nello stato S0 e l’ingresso s è a 0, rimango nello stato S0 (qualunque cosa faccia
r)”.
Attenzione: Una rete sequenziale asincrona è un circuito sempre in evoluzione. Negli intervalli in
cui lo stato interno successivo coincide con quello precedente la rete si dice essere in un
situazione di stabilità.
Le reti sequenziali asincrone significative sono quelle che sono dotate di una legge A tale da
assicurare che partendo da una situazione di stabilità si arrivi sempre ad un’altra situazione di
stabilità.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
D’ora in avanti, nel parlare delle reti sequenziali asincrone, si supporrà che:
• lo stato di ingresso venga cambiato per un bit alla volta, cioè che stati di ingresso
consecutivi siano anche adiacenti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Una maniera del tutto equivalente di rappresentare una rete sequenziale asincrona
è quella dei grafi di flusso. Un grafo di flusso è un insieme di nodi, che
rappresentano ciascuno uno stato interno, ed di archi, etichettati con uno stato di
ingresso, diretti da uno stato ad un altro.
Gli archi che si perdono all’infinito sono relativi a stati di ingresso che non si
possono verificare in quel caso. Gli archi che fanno “orecchio” indicano il fatto
che uno stato interno è stabile per quegli stati di ingresso. Visto che l’uscita è
funzione soltanto dello stato interno, può essere scritta direttamente dentro il
cerchio.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S1
Titolo: Introduzione alle Reti Sequenziali Asincrone
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone:
Il riconoscitore di sequenza come esempio
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1
Un riconoscitore di sequenza è una rete che ha N ingressi (in questo caso N=2, sono
sequenze di 2 bit), ed un’uscita.
È ovvio che è una rete con memoria, in quanto deve ricordare una data sequenza di
stati di ingresso.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1
Primo stato: S0
Si supponga che la rete, quando viene accesa, si trovi in uno stato interno
iniziale S0. Ovviamente, in questo stato l’uscita dovrà valere 0, in quanto non
devo sbloccare la cassaforte finché la rete non ha ricevuto tutta la sequenza.
Dallo stato iniziale non si esce finché non si è visto in ingresso il primo passo
corretto della sequenza che voglio riconoscere, cioè 01. Quando arriva 01, la
rete deve cambiare stato, perché devo memorizzare che la sequenza è
cominciata.
Secondo stato: S1
In S1si deve restare finché l’ingresso non cambia nuovamente. Per tutto il tempo che
permane 01 come stato di ingresso, la rete non deve fare niente. S1 è stabile con
ingresso 01. Quando cambia lo stato di ingresso, si deve per forza prendere una
decisione.
Se il nuovo stato di ingresso è 11, vuol dire che la rete ha ricevuto due passi di sequenza
corretta, e deve memorizzare questo nuovo avvenimento. Serve un nuovo stato interno,
perché gli altri due memorizzavano, rispettivamente, “0 passi corretti” (S0) e “1 passo
corretto” (S1).
Lo stato di ingresso potrebbe anche diventare 00, nel qual caso si deve ripartire da capo,
tornando in S0.
Terzo stato: S2
Memorizza il fatto che la rete ha ricevuto due passi corretti di sequenza. Ci è arrivata
con ingresso 11, e finché resta 11 in ingresso deve restare in S2 (orecchio).
Per lo stesso motivo di prima, ci vuole un arco verso infinito per l’ingresso 00.
Se invece arriva 10, ho terminato la sequenza corretta, e quindi la rete deve andare
in uno stato diverso dai precedenti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1
Quarto stato: S3
Qualunque altra cosa arrivi la rete deve ripartire da S0, in quanto non può essere
l’inizio di una sequenza corretta
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S2
Titolo: Il riconoscitore di sequenza come esempio
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Introduzione delle Reti Sequenziali Asincrone:
Esempi di domande di esame
Il Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 13/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone: Modelli
strutturali per la sintesi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1
sr
y 00 01 11 10 q
0 0 0 - 1 0
1 1 0 - 1 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1
Per la progettazione delle reti sequenziali asincrone, bisogna rispettare delle regole di
progetto e di pilotaggio che servono ad evitare che la rete vada a finire in situazioni di
instabilità. Tutti i vincoli per la progettazione delle reti combinatorie devono essere rispettati
(pilotaggio fondamentale, ingressi e uscite successivi devono essere adiacenti).
Così come, per un corretto pilotaggio, si evita di variare gli ingressi finché la rete
combinatoria non è a regime, si dovrà fare anche in modo che le variazioni delle
variabili di stato (ingressi per CN1) avvengano soltanto quando la rete è a
regime. Questo si fa, appunto, ritardandole opportunamente.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14
Titolo: Modelli Strutturali per la Sintesi
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone:
Sintesi di un riconoscitore di sequenza
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S1
Titolo: Sintesi di un riconoscitore di sequenza
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Asincrone:
Sintesi di un riconoscitore di sequenza
con stato ponte
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1
La nuova tabella di flusso e la corrispondente tabella con gli stati codificati sono
mostrate di seguito:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S2
Titolo: Sintesi di un riconoscitore di sequenza con stato ponte
Attività n°: 1
Un caso classico in cui non è possibile usare uno stato già presente come
stato ponte è questo:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi di Reti Sequenziali Asincrone:
Domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 14/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Descrivere il modello strutturale con ritardo per la sintesi delle reti sequenziali
asincrone (Schema grafico e discussione di ciascun componente)
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi del flip-flop SR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1
In figura a sinistra si mostra la sintesi a porte NAND del FF-SR. Per produrre
il nuovo stato interno da marcare basta un livello di logica. La rete
dovrebbe essere piuttosto veloce. La sua implementazione è molto semplice.
Si osserva che i ritardi di marcatura possono essere resi nulli. Si vede a
occhio che le variabili di stato rientrano in zone della rete che non sono
interessate da transizioni di ingresso. Infatti, se si cambia s, q rientra
sull’altra porta NAND, che è a regime. Dato che non c’è bisogno di ritardi, la
rete è a maggior ragione veloce
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1
La tabella di flusso finale mostrata nella figura a destra della precedente slide
si può ottenere partendo dalle due tabelle delle uscite dove i non specificato
vengono considerati 1 se considerati come tali nella ricerca degli implicanti
essenziali e 0 altrimenti.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1
È invece pericolosa una transizione multipla dallo stato di ingresso 11 allo stato di
ingresso 00 in quanto induce il FF-SR a portarsi in modo casuale (eventualmente dopo
una oscillazione fra gli stati interni SA e SB ) o nella situazione di stabilità in cui lo stato
interno presente è S0 o nella situazione di stabilità in cui lo stato interno presente è S1 .
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15
Titolo: Sintesi del flip-flop SR
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Esercizio di sintesi di una rete
sequenziale asincrona con modello strutturale ad
elementi di ritardo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S1
Titolo: Esercizio: Sintesi di una RSA con elementi di ritardo
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Il flip-flop D-latch: descrizione funzionale
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S2
Titolo: Il flip-flop D-latch: descrizione funzionale
Attività n°: 1
Descrizione funzionale:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Domande di Esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 15/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Modello strutturale di sintesi con FF-SR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1
Visto che i FF SR servono a memorizzare dei bit, questi circuiti possono essere usati come
elementi di marcatura degli stati nella sintesi di reti sequenziali asincrone. In figura si mostra il
nuovo modello struttura che si ottiene utilizzando il FF-SR.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1
La cui sintesi è:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16
Titolo: MODELLI STRUTTURALI DI SINTESI CON FLIP FLOP SR
Attività n°: 1
Osservazione 1:
Ai fini del ritardo e della presenza di alee essenziali, si può
osservare che la batteria di FF SR introduce del ritardo.
Osservazione 2:
Non ci si è preoccupati del fatto che CN1 ha due uscite
che vanno in ingresso ad un singolo FF, e che in pratica
possono cambiare in un ordine qualunque, in modo tale
da violare le regole di pilotaggio del FF SR (che è esso
stesso una RSA).
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sintesi del FF D-latch con modello
strutturale di sintesi con FF-SR
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S1
Titolo: SINTESI DEL FF D - LATCH
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Il FLIP FLOP D-(positive)-edge-triggered
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1
Molto Importante:
Per tutto il (breve) tempo in cui il FF DET è sensibile alla variabile di ingresso d, la
variabile di uscita q è disconnessa dall’ingresso.
L’uscita q viene adeguata al valore campionato di d dopo che la rete ha smesso di
essere sensibile al valore di d. Questo si vede bene dal diagramma di
temporizzazione in figura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1
Si passa ora alla sintesi del FF-DET. Si realizza con due sottoreti: la prima è il
campionatore sul fronte in salita di p e la seconda è un FF SR che serve solo ad
inserire il ritardo e garantire che l uscita sia aggiornata solo dopo Tpropagation > Thold.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1
La rete campionatore dovrà nella maggior parte del tempo, conservare il valore
campionato (quale che sia) sul fronte di salita di p, memorizzare 1 o memorizzare
0, e poi conservare.
Essa deve poter pilotare il FF SR ritardatore con comandi di conservazione, set e
reset. La rete campionatore si sintetizza come una rete sequenziale asincrona con
tre stati interni.
• S0: Quando p=0, la rete è in conservazione. L’uscita del campionatore vale 00,
la rete non è sensibile a d. Quando p va ad 1, può succedere di dover resettare
il ritardatore (se d=0) o settarlo (se d=1). Visto che le uscite del campionatore
saranno diverse nei due casi, si deve prevedere due stati distinti, S1 e S2, nei
quali, rispettivamente, si resetta o si setta il ritardatore.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1
• S1: si arriva in questo stato se d=0 quando p va ad 1. Quindi si deve dare ordine al
ritardatore di resettare, e si deve restare in S1. Non si può tornare in S0 subito,
altrimenti potrebbe darsi che l’ingresso al ritardatore non venga mantenuto per
abbastanza tempo. S1 deve essere stabile. Inoltre, in questo stato, non si deve
ascoltare d, perché è già stato dato il comando al ritardatore. L’unica transizione di
stato che può far muovere da S1 è quella per cui p va a zero. In questo caso si
torna in S0, in attesa di un nuovo fronte in salita di p.
• S2: vale esattamente tutto ciò che ho detto per S1, salvo che in questo caso il
ritardatore deve ricevere in ingresso 10.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S2
Titolo: IL FLIP FLOP D-(POSITIVE) EDGE - TRIGGERED
Attività n°: 1
La sintesi che si ottiene è quella della figura sottostante, per arrivare alla
quale basta applicare il Teorema di DeMorgan.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1
• Differenza fra modello strutturale per la sintesi di reti sequenziali asincrone con
elementi di ritardo e modello strutturale con FF-SR.
• Vantaggi sella sintesi per reti sequenziali asincrone con modello strutturale con
FF-SR
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 16/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Memorie RAM statiche:
Descrizione funzionale e realizzazione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1
In figura si mostra il simbolo utilizzato per una RAM statica formata da 128k
locazioni da 4 bit.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1
…continua
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1
…continua
Il comportamento della memoria è quindi deciso da /s, /mw, /mr nel seguente
modo:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S1
Titolo: Memorie RAM Statiche
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Memorie RAM statiche:
montaggio in parallelo e in serie.
Accenni alle memorie ROM
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1
È facile, anche se richiede un po’ di logica in più. Tanto per cominciare, per
indirizzare 256K ci vogliono 18 fili di indirizzo, uno in più. Si dividono le locazioni in
questo modo:
• parte “alta” (a17=1) in un blocco
• parte “bassa” (a17=0) nell’altro
Quindi, si genera il segnale di select per i due blocchi usando a) il segnale di select
che viene dal bus, e b) il valore di a17. Tutto il resto viene portato in parallelo ai due
blocchi.
Sebbene siano delle reti logiche combinatorie, in quanto il loro stato di uscita dipende
esclusivamente dallo stato di ingresso presente, le variabili di uscita, sono comunque
supportate da porte 3-state.
Questi tipi di circuiti vengono infatti utilizzati, insieme alle RAM, per implementare lo spazio di
memoria dei calcolatori (sullo stesso bus), venendone a rappresentare la parte non volatile.
Usando una terminologia simile a quella che si usa per la RAM, si dice che le ROM, PROM,
EPROM sono costituite da locazioni indirizzabili, ognuna delle quali contiene un dato indelebile
durante la normale fase operativa e accessibile in sola lettura.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S2
Titolo: MONTAGGIO DELLE RAM STATICHE E ACCENNI ALLE ROM
Attività n°: 1
Per la parte relativa alla memorie RAM statiche si prega di fare riferimento al
paragrafo 6 del capitolo 3 del libro di testo.
La parte relativa alle memorie ROM è stata invece estratta dal paragrafo 7 del
capitolo 3 del libro di testo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Memorie RAM e ROM:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 17/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
I Registri
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
In figura (a) si mostra la realizzazione di un registro a W bit, nella figura (b) e (c) si
mostrano le simbologie compatte.
(c)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
p
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Il fatto che due stati di ingresso ai registri, presentati su istanti di clock (fronti di
salita) consecutivi, siano identici, adiacenti o non adiacenti non riveste alcuna
importanza.
Quindi:
Tra due fronti di salita del clock, lo stato di ingresso ai registri può cambiare
in qualunque modo (o non cambiare affatto). Al nuovo fronte di salita del
clock, lo stato di ingresso presente verrà memorizzato (come se fosse un nuovo
stato, anche se identico al precedente).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
In figura (a) si mostra la realizzazione di un registro a W bit, nella figura (b) e (c) si
mostrano le simbologie compatte.
(c)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
p
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Il fatto che due stati di ingresso ai registri, presentati su istanti di clock (fronti di
salita) consecutivi, siano identici, adiacenti o non adiacenti non riveste alcuna
importanza.
Quindi:
Tra due fronti di salita del clock, lo stato di ingresso ai registri può cambiare
in qualunque modo (o non cambiare affatto). Al nuovo fronte di salita del
clock, lo stato di ingresso presente verrà memorizzato (come se fosse un nuovo
stato, anche se identico al precedente).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
L’unica regola di pilotaggio che si deve garantire (quella dalla quale discende
tutto il resto) è che:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Per dimensionare il periodo T di clock in modo da tener conto dei tre vincoli
sopra scritti, noti i ritardi definiti, occorre rispettare le seguenti condizioni:
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Considerazioni importante
Nelle RSS, lo stato di ingresso (opportunamente modificato dalle reti
combinatorie) viene campionato all’arrivo del clock. Cosa faccia lo stato di
ingresso tra due clock non ha alcuna importanza, purché si stabilizzi in tempo.
Nell’ultimo caso la rete vedrà sempre due stati di ingresso differenti (perché
presentati ad istanti differenti).
Le RSS evolvono sul fronte in salita del clock e non quando cambiano gli
ingressi. Questa caratteristica strutturale consente di fare un sacco di cose in più
rispetto a quello che si può fare con le reti sequenziali sincronizzate, nelle quali si
è vincolati a cambiare gli ingressi uno alla volta, e a far evolvere la rete soltanto
con il cambiamento degli ingressi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S1
Titolo: Introduzione alle Reti Sequenziali Sincronizzate
Attività n°: 1
Attenzione:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il segnale di clock
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1
Il segnale di clock
Il duty-cycle non può essere ne troppo stretto né, ovviamente, troppo largo.
Si vedrà in seguito che una CPU è una rete sequenziale sincronizzata che
per eseguire un'istruzione in genere “prende” più cicli di clock.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1
In queste moderne CPU essendo la velocità di clock così elevata, essa viene
generata da un minuscolo oscillatore al quarzo posto all'interno della stessa
CPU, regolabile tramite il BIOS.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S2
Titolo: Il segnale di clock
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 18/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
I Contatori
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19
Titolo: Contatori, Sommatori, Registri Multi-funzionali
Attività n°: 1
Riporto entrante
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Sommatori
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1
Come effettivamente si realizza un full adder dipende dalla base e dalla codifica. Il
full adder in base 2 è un circuito che fa somme di una cifra in base 2, con riporto.
In figura si mostra il simbolo del full adder in base due.
• Per quanto riguarda la produzione del riporto uscente, non ci sono problemi: si può fare
in forma SP con 3 porte AND a 2 ingressi ed una porta OR a tre ingressi.
• Per quanto riguarda la produzione della somma si, si osserva che essa è ad uno se e
solo se il numero di 1 in ingresso è dispari.
Per quest’ultimo, esiste una semplice realizzazione, fatta tramite porte XOR. Mettere più
porte XOR in cascata (eventualmente ad albero) consente di fare circuiti che riconoscono
un numero dispari di 1, che cioè danno 1 quando lo stato di ingresso ha un numero dispari
di 1.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S1
Titolo: SOMMATORI
Attività n°: 1
In figura, si mostra la sintesi del full adder in base 2. Esso è una rete a 2 livelli di
logica con tempo di attraversamento pari a 2 τ, dove τ è il tempo di attraversamento di
un livello di logica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Registri multifunzionali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 19/S2
Titolo: REGISTRI MULTI-FUNZIONALI
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Calcolatori Elettronici e
Sistemi Operativi
Webinar
Basi di reti logiche
Prof. Pietro Ducange
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 19/s3
Titolo: Contatori, sommatori, registri multi-funzionali
Attività n°: 1
Webinar
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il modello di Moore
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1
Una rete di Moore può sempre essere sintetizzata secondo il modello di figura.
STAR è lo status register, cioè il registro che memorizza lo stato interno
presente (marcato).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20
Titolo: IL MODELLO DI MOORE
Attività n°: 1
Si noti che:
• A questo punto, la rete non sarà più sensibile all’ingresso, e quindi non
ci sono problemi di nessun tipo.
• Il nuovo stato interno delle RSS è lo stato di uscita della rete RCA, che ha
in ingresso sia gli ingressi della RSS che le variabili di stato.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il modello di Mealy e di Mealy Ritardato
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1
Nelle reti di Moore l’uscita varia quando varia il clock (perché dipende solo dallo stato
interno), nelle reti di Mealy varia anche quando varia lo stato di ingresso.
Si dice che nelle reti di Moore, l’uscita è un clock indietro rispetto all’ingresso che l’ha
generata. Dipende, infatti, soltanto dal penultimo stato di ingresso.
nelle reti di Mealy, l’uscita dipende anche dall’ultimo ingresso che l’ha generata.
Essendo la legge B più flessibile che nel caso precedente, in genere si riescono a risolvere
gli stessi problemi con un numero minore di stati interni
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1
Importantissimo:
Lo stato di uscita cambia dopo il clock, ed il suo valore dipende dallo stato interno
e di ingresso precedenti all’arrivo del clock.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S1
Titolo: IL MODELLO DI MEALY E MEALY RITARDATO
Attività n°: 1
Osservazioni finali
• Non sono trasparenti, come le reti di Mealy (in cui ho una connessione
diretta ingresso-uscita).
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Il flip flop JK: descrizione e sintesi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1
Sintesi finale
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 20/S2
Titolo: IL FLIP FLOP JK: DESCRIZIONE E SINTESI
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
• Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete di Mealy
• Disegnare e discutere il modello strutturale di Mealy ritardato per reti sequenziali sincronizzate
• Disegnare la temporizzazione che garantisce il corretto pilotaggio dei una rete di Mealy ritardato
• Descrizione e sintesi di un FF JK
Corso di Laurea: Ingegneria informatica e dell'automazione curr. Sistemi di elaborazione e controllo
Insegnamento: Calcolatori elettronici e sistemi operativi
Lezione n°: 20/s3
Titolo: Modelli di sintesi di moore e mealy
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Mappe Concettuali
Si invita lo studente a realizzare una mappa concettuale che sintetizzi la
tematica relativa alle reti logiche sequenziali, sia asincrone sia
sincronizzate
Mappe Concettuali
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate Complesse:
Descrizione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1
Il problema dei tre modelli di reti sequenziali sincronizzate visti finora è che si
possono applicare soltanto a reti molto semplici.
Si prende come punto di partenza il modello di Mealy ritardato, che abbiamo visto
avere diverse caratteristiche interessanti:
• sono non trasparenti
• hanno uscite stabili, che cambiano in tempi certi
• non sono rallentate da percorsi combinatori troppo lunghi
• possono essere montate in reazione senza problemi
• hanno una legge B flessibile, che porta in genere a risolvere problemi usando un
numero minore di stati interni (vedremo successivamente esempi di sintesi
di reti secondo il modello di Moore e Mealy ritardato).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1
Si supponga di voler descrivere, usando il modello di Mealy Ritardato, una rete che
conta, modulo 16, il numero di sequenze corrette 00, 11, 01 ricevute in
ingresso. In pratica, ogni volta che vede una sequenza corretta, incrementa di 1 il
valore in uscita, rappresentato su 4 bit.
In figura si mostra uno schema generale del modello per RSS complessa:
Esistono vari linguaggi e strumenti per effettuare tale descrizione, come per
esempio il Verilog utilizzato nel libro di testo consigliato ma non oggetto di questo
corso.
Gli studenti sono tenuti a sapere che tali linguaggi esistono e ad aver capito cosa
significa descrizione tramite linguaggio di trasferimento fra registri (la descrizione
con pseudo-linguaggio va capita e saputa).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21
Titolo: DESCRIZIONE DELLE RSA COMPLESSE
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Tale modello, prevede di dividere la rete in una parte operativa ed una parte di
controllo come mostrato in figura.
Parte
Controllo
clock
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1
Parte Operativa
Parte Operativa
Parte Controllo
Parte Controllo
In figura si mostra uno schema generale del modello a Parte Operativa e Parte Controllo
Si hanno due RSS interconnesse, però non si ha mai una catena chiusa di
reti combinatorie, perché una delle due (la parte controllo) è di Moore.
La parte operativa si implementa in maniera euristica, utilizzando il piu possibile
delle reti standard ed eliminando ridondanze sia nelle variabili di comando sia
nelle variabili di condizionamento.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S1
Titolo: SCOMPOSIZIONE IN PARTE OPERATIVA E PARTE CONTROLLO
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate Complesse
Accenni alla struttura del calcolatore
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1
Le istruzioni saranno approfondite nella parte relativa al linguaggio Assembly del modulo di
Calcolatori Elettronici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S2
Titolo: ACCENNI ALLA STRUTTURA DEL CALCOLATORE
Attività n°: 1
In pratica, devono essere sintetizzate tutte le sotto reti che consentono l’estrazione e
l'esecuzione delle istruzioni, incluso l’accesso alla memoria e allo spazio di I/O.
In questo corso questa fase non sarà trattata. Nel libro di testo consigliato lo studente potrà
vedere come invece tale argomento è trattato in maniera dettagliata.
Allo studente basta aver capito che a partire dalle semplici porte logiche AND, OR e NOT si
arriva, seguendo tutto il percorso fatto fino ad ora, alla descrizione e sintesi di un processore
funzionante.
Nel modulo di architettura dei calcolatori, si studierà ad un livello leggermente più alto (ma
non troppo) come sono organizzati a livello hardware e software i calcolatori elettronici.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Reti Logiche
Reti Sequenziali Sincronizzate
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 21/S3
Titolo: Esempi di domande di esame
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Introduzione al linguaggio Assembly
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1
Visto che viene scritta in termini simbolici (invece che in stringhe binarie,
dovrà poi essere necessariamente tradotta (da un programma che si chiama
assemblatore), ma la traduzione è 1:1 e totalmente meccanica.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22
Titolo: INTRODUZIONE AL LINGUAGGIO ASSEMBLY
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Modello funzionale a blocchi di un calcolatore
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1
Funzionale non vuol dire, infatti, che tutti i calcolatori siano fatti come
mostrato di seguito. Vuol dire che si possono identificare in tutti i calcolatori
dei gruppi di circuiti che svolgono le funzioni descritte.
Nelle lezioni dei prossimi nuclei tematici, si farà invece riferimento alla
architettura fisica di una specifica famiglia di processori e di calcolatori
basati su tali processori.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S1
Titolo: MODELLO FUNZIONALE A BLOCCHI DI UN CALCOLATORE
Attività n°: 1
La FPU esegue operazioni sui numeri reali (o, per essere precisi, su un
sottoinsieme di numeri razionali, visto che su un calcolatore si possono
rappresentare soltanto numeri con un numero finito di cifre, che sono
appunto razionali).
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Rappresentazione dei numeri naturale ed interi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S2
Titolo: RAPPRESENTAZIONE DEI NUMERI NATURALE ED INTERI
Attività n°: 1
Per poter comprendere il funzionamento della ALU, delle operazioni che essa
può svolgere e delle istruzioni Assembly associate è necessario sapere come al
suo interno i numeri naturali ed i numeri reali sono rappresentati.
configurazione di N bit bN −1 , bN −2 ,..., b1 , b0 può essere vista come un numero naturale rappresentato
N −1
in base 2, il numero X = ∑ bi ⋅ 2i . Per tale motivo, in una stringa di N bit il bit b0 è detto Bit Meno
i =0
Dualmente, il numero naturale X può essere codificato su una stringa di bit se si trovano le cifre
della sua rappresentazione in base 2. Tali cifre si trovano dividendo per due successivamente il
numero X, e considerando tutti i resti (fare l’esempio con 53).
Quindi un numero intero x è rappresentabile su N bit o meno a seconda che entri o meno in questo
intervallo. Su 8 e 16 bit l’intervallo è [-128, 127], [-32768, 32767], etc.
Il numero x viene rappresentato in C2 dalla stringa di bit che corrisponde al numero naturale X così
calcolato:
⎧ x x≥0
X = ⎨ N
⎩2 + x x < 0
Purché x sia un numero intero rappresentabile in C2 su N bit, cosa che deve essere verificata. In
modo equivalente, si ha:
X = x 2N
X
2N −1 (111...111)
MSB = 1
Quando si parla di numeri in C2,
rappresentazione tenere sempre a mente questo disegno,
che aiuta a ricordare come vanno le
2 N −1 (100...000 ) cose
N −1
2 −1 ( 011...111)
MSB = 0
x
N −1
−2 2 N −1 − 1
Numero intero
Come si vede dalla figura, tutte le stringhe di bit il cui bit più significativo è “0” rappresentano
numeri interi positivi, mentre tutte quelle che cominciano per “1” rappresentano numeri interi
negativi. Quindi, data una stringa di bit X che rappresenta un numero intero, il numero intero x che
le corrisponde è il seguente:
⎧⎪ X X N −1 = 0
x = ⎨
⎪⎩− ( X + 1) X N −1 = 1
Il complemento è l’operazione che cambia gli “0” in “1” e viceversa.
Fare un paio di esempi.
Visto che nel seguito capiterà spesso di dover menzionare sequenze di bit lunghe 8, 16, 32 bit, tali
cioè da essere incomprensibili se scritte a suon di zeri e uni, si farà spesso uso della notazione
esadecimale, in forza della quale una sequenza di quattro bit viene fatta corrispondere a uno di
questi sedici simboli (o cifre in base 16):
Si scriverà quindi 0xC1 per indicare il byte 1100|0001 (il prefisso 0x individua numeri in
notazione esadecimale), etc.
Per completezza, si accenna al fatto che nei processori Intel x86 questo non è l’unico modo di
rappresentare naturali ed interi. Esiste anche la rappresentazione Binary Coded Decimal, in
accordo alla quale i numeri sono rappresentati come gruppi di cifre in base 10, ciascuna delle quali
occupa 4 bit. Per esempio, il numero naturale 32 in BCD sarebbe rappresentato come 0011 0010
.Il processore ha delle istruzioni per lavorare con i numeri naturali/interi in C2, che vedremo, e delle
istruzioni per lavorare con naturali BCD, che non vedremo per motivi di tempo (e di scarsa
significatività). Ad ogni buon conto, i programmi che lavorano in base 2 sono estremamente più
veloci.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione Funzionale del Calcolatore I:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 22/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
introduzione e visione della memoria
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1
Spazio di memoria
All’interno di una locazione il bit più significativo fra gli 8 che essa contiene è
quello che si trova all’estremità sinistra (bit numero 7), mentre il bit meno
significativo è quello che si trova all’estremità destra (bit numero 0).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23
Titolo: INTRODUZIONE E VISIONE DELLA MATERIA
Attività n°: 1
Il processore accede allo spazio di memoria durante la fase di prelievo delle istruzioni e
durante la fase di esecuzione di molte delle istruzioni operative (per procurarsi i dati o
per memorizzare risultati).
Il motivo sarà più chiaro tra qualche lezione, ma è evidente che, dato che la memoria
RAM è volatile (cioè non mantiene informazione in assenza di tensione), è necessario
che ci sia una parte di memoria con un programma precaricato fatta in tecnologia
differente (ROM; appunto).
In realtà, non è detto che il calcolatore abbia a disposizione 4GB di memoria fisica.
Come vedremo in seguito, parte della memoria che il programmatore può
indirizzare potrà essere mappata sulla memoria fisica e parte sulla memoria di
massa.
Attenzione
Lo spazio di I/O
Lo spazio di I/O
Nella maggior parte dei casi, su una determinata porta di I/O si può soltanto leggere
o scrivere (e non tutte e due le cose insieme).
Attenzione:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
introduzione e visione della memoria
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1
Spazio di memoria
All’interno di una locazione il bit più significativo fra gli 8 che essa contiene è
quello che si trova all’estremità sinistra (bit numero 7), mentre il bit meno
significativo è quello che si trova all’estremità destra (bit numero 0).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S1
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1
Il processore accede allo spazio di memoria durante la fase di prelievo delle istruzioni e
durante la fase di esecuzione di molte delle istruzioni operative (per procurarsi i dati o
per memorizzare risultati).
Il motivo sarà più chiaro tra qualche lezione, ma è evidente che, dato che la memoria
RAM è volatile (cioè non mantiene informazione in assenza di tensione), è necessario
che ci sia una parte di memoria con un programma precaricato fatta in tecnologia
differente (ROM; appunto).
In realtà, non è detto che il calcolatore abbia a disposizione 4GB di memoria fisica.
Come vedremo in seguito, parte della memoria che il programmatore può
indirizzare potrà essere mappata sulla memoria fisica e parte sulla memoria di
massa.
Attenzione
Lo spazio di I/O
Lo spazio di I/O
Nella maggior parte dei casi, su una determinata porta di I/O si può soltanto
leggere o scrivere (e non tutte e due le cose insieme).
Attenzione:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
Registri Generali e di Stato
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1
• I registri ESI, EDI, EBX ed EBP sono a volte utilizzati come registri
puntatore
Il registro EIP
A questo punto siamo in grado di dare una descrizione più precisa di cosa
fa il processore.
Ciclicamente il processore:
• Preleva dalla memoria, all’indirizzo specificato in EIP, una nuova
istruzione.
• Incrementa EIP di tante unità quanti sono il numero di di byte su
cui è codificata l’istruzione che ha prelevato
• Esegue l’istruzione prelevata
Il registro EF
Alcune note:
Quando si manipolano numeri interi, i flag da tenere sotto controllo sono OF,
SF, ZF (CF non è significativo, e guardarlo dà informazioni irrilevanti).
Nota sul processore: nella ALU ci sono molti altri registri che non saranno
descritti, in quanto se ne può tranquillamente fare a meno per scrivere un
buon numero di programmi. Qualora dovessero servire, altri registri
potrebbero essere introdotti in seguito
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S2
Titolo: Organizzazione funzionale del calcolatore II
Attività n°: 1
Condizioni al reset
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Organizzazione funzionale del calcolatore II:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 23/S3
Titolo: ESEMPI DI DOMANDE DI ESAME
Attività n°: 1
A cosa serve il registro EIP? Discutere come viene utilizzato nella fase
di prelievo ed esecuzione di una istruzione.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Linguaggio macchina, mnemonico e Assembly:
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24
Titolo: INTRODUZIONE
Attività n°: 1
Linguaggio macchina
Linguaggio mnemonico
Linguaggio Assembly
Ad ogni buon conto, tutto quello che si può dire del linguaggio
mnemonico vale anche per l’Assembler.
Quando ne hanno uno solo, questo può essere sorgente o destinatario, a seconda
dell’istruzione (l’uno esclude l’altro).
Quando ci sono due operandi sono della stessa lunghezza (non è vero sempre, è
vero nelle istruzioni che consideriamo).
Così come in C++ ci sono diversi modi di riferire una variabile (per nome, per
puntatore, per riferimento, etc.), gli operandi che stanno in memoria si possono
riferire in tanti modi diversi, che vedremo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Linguaggio macchina, mnemonico e Assembly:
Primo esempio di programma in linguaggio
mnemonico
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1
Si scrive prima il codice del programma che successivamente verrà commentato. Per
scriverlo, si immagina contenuto in qualche locazione di memoria, ad esempio a
partire dall’indirizzo 0x00000200.
Indirizzo Contenuto
0x00000100
0x00000101
0x00000102
0x00000103
0x00000104
…
0x00000200 MOVB $0x00, %CL
0x00000202 MOVL 0x00000100, %EAX
0x00000207 CMPL $0x0000000, %EAX
0x0000020A JE %EIP+$0x07
0x0000020C SHRL %EAX
0x0000020E ADCB $0x00, %CL
0x00000211 JMP %EIP-$0x0C
0x00000213 MOVB %CL, 0x00000104
0x00000218 …
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S1
Titolo: PRIMO ESEMPIO DI PROGRAMMA IN LINGUAGGIO MNEMONICO
Attività n°: 1
• I numeri sono interpretati in base 10, a meno che non siano preceduti
dal prefisso 0x, nel qual caso sono esadecimali.
…
0x0000020A JE EIP+$0x0B
JE: “Jump if equal” Se da un’analisi del registro dei flag (che è stato settato dal precedente
confronto) è emerso che i due operandi erano uguali (cioè che il contenuto di EAX era zero), si
prosegue ad eseguire il programma dalla cella di memoria che sta 0x0B indirizzi più avanti. Se
si fa il conto (che è noiosissimo), viene fuori l’ultima istruzione. Infatti, mentre si sta
eseguendo quest’istruzione, EIP ha già il valore della prossima locazione di memoria (in
quanto viene incrementato subito dopo che il processore ha prelevato un’istruzione), cioè
0x0000020C. Se a questo valore si somma 0x0B, si ottinene 0x00000217. Quest’istruzione e
la precedente sono ciò che consente di uscire dal ciclo.
…
0x0000020E ADCB $0x00, %CL
ADC: “Add with Carry”. Quest’istruzione somma all’operando destinatario (CL) l’operando
sorgente ed il contenuto del flag CF. (come se si scrivesse: CL += 0x00 + CF). In questo
caso, l’operando sorgente è zero, quindi somma il contenuto del flag solamente. Quindi, se il
precedente shift ha messo in CF un bit pari ad uno, il registro CL viene incrementato, altrimenti
no.
Notare che:
Nel programma ci sono due tipi di istruzioni:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Linguaggio macchina, mnemonico e Assembly:
Approfondimento sul linguaggio Assemby
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 24/S2
Titolo: APPROFONDIMENTO SUL LINGUAGGIO ASSEMBLY
Attività n°: 1
http://it.wikipedia.org/wiki/Assembly
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Indirizzamento delle istruzioni operative:
Indirizzamento di registro e immediato
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1
L’operando che alla fine viene sostituito (nella maggior parte dei
casi) è detto operando destinatario, l’altro operando (che rimane
inalterato) è detto operando sorgente.
Il campo size può essere omesso nella maggior parte dei casi, con
regole che saranno mostrate successivamente.
In tal caso, tale operando può essere sia sorgente che destinatario, a
seconda del codice operativo dell’istruzione.
OPCODEsize operando
Esistono anche istruzioni senza operandi, il cui formato consta del solo
codice operativo.
Indirizzamento di registro
Nelle istruzioni a due operandi è possibile che sia previsto, per entrambi gli
operandi, l’indirizzamento di registro.
Visto che i registri hanno una dimensione nota, quando c’è di mezzo un
indirizzamento di registro non è mai necessario specificare con un suffisso la
lunghezza degli operandi.
OPCODE %DI
l’operando è a 16 bit ed è contenuto nel registro DI. Se è sorgente o
destinatario dipende dall’istruzione (non si è in grado di deciderlo finché non
viene specificato il codice operativo).
OPCODE %EAX,%EBX
gli operandi sono a 32 bit; l’operando sorgente è contenuto nel registro
EAX e l’operando destinatario nel registro EBX.
OPCODE %AH,%CL
gli operandi sono ad 8 bit; l’operando sorgente è contenuto nel registro
AH e l’operando destinatario nel registro CL.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25
Titolo: INDIRIZZAMENTO DI REGISTRO IMMEDIATO
Attività n°: 1
Indirizzamento immediato
OPCODE $0x20,%AL
gli operandi sono ad 8 bit; l’operando sorgente (individuato mediante
l’indirizzamento immediato) coincide con il campo source e vale 0x20 ; l’operando
destinatario (individuato mediante l’indirizzamento di registro) è contenuto in AL.
OPCODE $0x5683A20B,%ECX
gli operandi sono a 32 bit; l’operando sorgente (individuato mediante
l’indirizzamento immediato) coincide con il campo source e vale 0x5683A20B;
l’operando destinatario (individuato mediante l’indirizzamento di registro) è
contenuto in ECX.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Indirizzamento delle istruzioni operative:
Indirizzamento di memoria e delle porte di I/O
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1
Indirizzamento di memoria
OPCODEsfx ±disp(base,indice,scala)
OPCODEW 0x00002001
OPCODEL (%EBX)
l’operando è a 32 bit e si trova nella quadrupla locazione il cui indirizzo è
contenuto nel registro EBX (indirizzamento indiretto con registro puntatore).
Se si vuole che l’indirizzo sia calcolato con il registro indice moltiplicato per
la scala, devo aggiungere la scala ed una virgola in più:
OPCODEL (,%ESI,4)
l’operando è a 32 bit e si trova nella quadrupla locazione il cui indirizzo è
dato dal contenuto del registro indice ESI moltiplicato per 4.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1
OPCODEW 0x002A3A2B(%EDI)
l’operando è a 16 bit e si trova nella doppia locazione il cui indirizzo si ottiene
sommando, modulo 232, il displacement 0x002A3A2B con l’indice contenuto in EDI
(indirizzamento con displacement e registro indice di modifica).
OPCODEB (%EBX,%EDI)
l’operando è ad 8 bit e si trova nella locazione il cui indirizzo si ottiene sommando,
modulo 232, la base contenuta in EBX con l’indice contenuto in EDI (indirizzamento
bimodificato senza displacement). Volendo, si può aggiungere un fattore di scala in
fondo, che coinvolge soltanto il registro indice.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1
OPCODEB 0x002F9000(%EBX,%EDI)
l’operando è ad 8 bit e si trova nella locazione il cui indirizzo vale:
|base in EBX + indice in EDI + 0x002F9000|modulo232
OPCODEB -0x9000(%EBX,%EDI)
l’operando è ad 8 bit e si trova nella locazione il cui indirizzo vale:
|base in EBX + indice in EDI – 0x00009000|modulo232 =
|base in EBX + indice in EDI + 0xFFFF70000| modulo232
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1
Uno dei due operandi (mai entrambi) può trovarsi nello spazio di I/O. In tal caso,
per riferirlo occorre indicare l’indirizzo a 16 bit della porta (o della coppia/quadrupla
di porte) che lo contiene.
Tuttavia,
- l’indirizzamento diretto è possibile solo se la porta da riferire ha indirizzo
inferiore a 256,
- l’indirizzamento indiretto è possibile solo utilizzando DX come registro
puntatore.
Il motivo per cui le cose stanno così è che a livello di codice macchina le istruzioni
possono soltanto essere scritte in questo modo.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1
IN 0x001A,%AL
gli operandi sono ad 8 bit; l’operando destinatario è contenuto in AL; l’operando sorgente si
trova nello spazio di I/O nella porta di indirizzo 0x001A.
IN (%DX),%AX,
gli operandi sono a 16 bit; l’operando destinatario è contenuto in AX; l’operando sorgente si
trova nello spazio di I/O nella doppia porta il cui indirizzo è contenuto in DX.
OUT %AL,0x003A
gli operandi sono a 8 bit; l’operando destinatario si trova nello spazio di I/O nella porta di
indirizzo 0x003A; l’operando sorgente è contenuto in AL
OUT %AL,(%DX)
gli operandi sono ad 8 bit; l’operando destinatario si trova nello spazio di I/O nella porta il cui
indirizzo è contenuto in DX; l’operando sorgente è contenuto in AL.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S1
Titolo: INDIRIZZAMENTO DI MEMORIA E DELLE PORTE DI I/O
Attività n°: 1
Notare che:
IN $0x1A,%AL
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Indirizzamento delle istruzioni operative:
Note sulla sintassi del linguaggio mnemonico
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1
Ad esempio:
MOV 0x00002000,%EDX
MOV $0x00002000,%EDX
Tale suffisso è:
• B per byte (8 bit)
• W per word (16 bit)
• L per double word (32 bit)
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S2
Titolo: NOTE SULLA SINTASSI DEL LINGUAGGIO MNEMONICO
Attività n°: 1
Esempio:
MOV $0x2000,(%EDI)
MOV $0x10,0x2000
Non contate sull’assemblatore per assistervi in casi del genere. Ogni tanto segnala
l’errore, altre volte no, e il programma non funziona.
Ad esempio:
In linea generale, un compilatore C++ sta molto più attento a quel che
viene fatto di un assemblatore. Non si può far conto sullo stesso livello di
supporto quando si programma in Assembly.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E Controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 25/S3
Titolo: Indirizzamento delle istruzioni operative
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU I:
Introduzione e istruzioni di trasferimento
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1
• istruzioni operative:
istruzioni di trasferimento
istruzioni aritmetiche
istruzioni di traslazione/rotazione
istruzioni logiche
• istruzioni di controllo.
Istruzioni di salto
Istruzioni per la gestione di sottoprogrammi
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1
Nelle prossime attività e nelle prossime lezioni saranno fornite allo studente una serie di
dispense che descrivono le istruzioni del linguaggio Assembly.
Si consiglia allo studente di leggere attentamente le dispense per farsi una idea di quello
che ha a disposizione per realizzare dei programmi in Assembly.
Ulteriori chiarimenti relativi alle dispense si trovano nell’ultima attività di questa lezione.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26
Titolo: INTRODUZIONE E ISTRUZIONI D TRASFERMIMENTO
Attività n°: 1
Le dispense fornite sono tratte dal materiale didattico prodotto dal prof. Giovanni
Stea dell’Università di Pisa e dalla dispensa “Il calcolatore C86/32: struttura e
manuale d’uso ” scritta dal prof. Paolo Corsini dell’Università di Pisa.
Si ricorda agli studenti di contattare solo il Prof. Pietro Ducange per eventuali
chiarimenti relativi alle dispense.
IstruzioniDiTrasferimento.pdf
1 Istruzioni di trasferimento
Prof. Giovanni Stea, Università di Pisa
Prof. Pietro Ducange
Sono quelle che consentono di muovere le informazioni da una parte all’altra. Nessuna di queste
tocca i flag.
1.1 MOVE
FORMATO: MOV source, destination
AZIONE: Sostituisce l’operando destinatario con una copia dell’operando sorgente
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria, Registro Generale MOV 0x00002000,%EDX
Registro Generale, Memoria MOV %CL,0x12AB1024
Registro Generale, Registro Generale MOV %AX,%DX
Immediato, Memoria MOVB $0x5B,(%EDI)
Immediato, Registro Generale MOV $0x54A3,%AX
Ricordarsi che:
Non è possibile trasferire dati da una locazione di memoria in un’altra con una sola istruzione
MOV.
Quest’istruzione carica un indirizzo di memoria (espresso in uno qualunque dei modi visti
precedentemente in un registro a 32 bit.
MOV 0x00213AB1(%EAX,%EBX,4),%ECX
LEA 0x00213AB1(%EAX,%EBX,4),%ECX
Ad esempio, la prima mette il contenuto della cella di memoria indirizzata in quel modo in %ECX.
La seconda mette l’indirizzo in %ECX.
1.3 EXCHANGE
FORMATO: XCHG source, destination
AZIONE: Sostituisce all’operando destinatario una copia dell’operando sorgente e viceversa.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria, Registro Generale XCHG 0x00002000,%DX
Registro Generale, Memoria XCHG %AL,0x000A2003
Registro Generale, Registro Generale XCHG %EAX,%EDX
NB: la XCHG modifica il sorgente. Per ora è l’unica istruzione che lo fa.
1.4 INPUT
FORMATO: IN indirizzo, %AL
IN indirizzo, %AX
IN indirizzo, %EAX
IN (%DX),%AL
IN (%DX),%AX
IN (%DX),%EAX
AZIONE: Sostituisce il contenuto del registro destinatario (AL, AX, EAX) con il contenuto di
un adeguato numero di porte consecutive. L’indirizzo della prima (ed eventualmente unica porta) è
specificato direttamente nell’istruzione (primi tre formati) o è contenuto nel registro DX (ultimi tre
formati); i primi tre formati possono essere utilizzati solo per individuare porte con indirizzo
inferiore a 256.
FLAG di cui viene modificato il contenuto: Nessuno.
1.5 OUTPUT
FORMATO: OUT %AL, indirizzo
OUT %AX, indirizzo
OUT %EAX, indirizzo
OUT %AL,(%DX)
OUT %AX,(%DX)
OUT %EAX,(%DX)
AZIONE: Copia il contenuto del registro sorgente (AL, AX, EAX) in un adeguato numero di
porte consecutive. L’indirizzo della prima (ed eventualmente unica porta) è specificato direttamente
nell’istruzione (primi tre formati) o è contenuto nel registro DX (ultimi tre formati); i primi tre
formati possono essere utilizzati solo per individuare porte con indirizzo inferiore a 256.
FLAG di cui viene modificato il contenuto: Nessuno.
NB: si noti che nelle istruzioni di input ed output è possibile utilizzare soltanto i registri AL, AX,
EAX.
Per poter usare le istruzioni IN e OUT occorre conoscere i numeri di indirizzo delle porte delle varie
interfacce. Ad esempio, se si sa che la porta parallela (quella cui attacco, ad esempio, la stampante)
è l’interfaccia di indirizzo XXXX, e quando di vuol buttare fuori un byte sulla parallela scrivo
quell’indirizzo nella OUT.
Queste sono le uniche due istruzioni che indirizzano operandi nello spazio di I/O. L’unica cosa
che si può fare con questi operandi è trasferirli dentro il processore, o dal processore allo spazio di
I/O. In generale, i conti si fanno con gli operandi dentro il processore.
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 26/S1
#lezione#
Titolo: LA PILA
#titolo#
Attività n°: 1
#attività#
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU I:
La pila
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S1
Titolo: LA PILA
Attività n°: 1
Durante gli esami del primo anno vi è stata mostrata una struttura
dati detta pila e molto probabilmente anche una sua
implementazione in C/C++.
Il registro ESP (Stack Pointer register) del processore contiene ad ogni istante
l’indirizzo del top della pila, cioè l’indirizzo della locazione riempita per ultima.
Più precisamente:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU I:
Istruzioni per la gestione della pila
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S2
Titolo: ISTRUZIONI PER LA GESTIONE DELLA PILA
Attività n°: 1
1.1 PUSH
FORMATO: PUSH source
AZIONE: Salva nella pila corrente una copia dell’operando sorgente (che deve essere a 16 o a
32 bit). Più in dettaglio, compie le seguenti azioni: i) decrementa l’indirizzo contenuto nel registro
ESP di due o di quattro; ii) memorizza una copia dell’operando sorgente nella doppia o quadrupla
locazione il cui indirizzo è contenuto in ESP.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria PUSHW 0x3214200A
Immediato PUSHL $0x4871A000
Registro Generale PUSH %BX
1.2 POP
FORMATO: POP destination
AZIONE: Rimuove dalla pila corrente una word o un long e la sostituisce all’operando
destinatario. Più in dettaglio, compie le seguenti azioni: i) sostituisce all’operando destinatario una
copia del contenuto della doppia o della quadrupla locazione il cui indirizzo è contenuto in ESP, ii)
incrementa di due o di quattro l’indirizzo contenuto in ESP, rimuovendo in tal modo dalla pila la
word o il long copiato.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria POPW 0x02AB2000
Registro Generale POP %BX
Oltre che a gestire i sottoprogrammi, la pila serve a parcheggiare i dati quando devo utilizzare i
registri per qualche altro scopo. Supponiamo di scrivere un pezzo di programma, e ad un certo
punto dentro %EAX abbiamo dei dati che stiamo elaborando. Se mi serve un dato da un’interfaccia,
devo utilizzare una IN, e posso mettere il risultato solo dentro (un pezzo di) %EAX, e quindi
sporcherei il registro che sto usando.
Per evitare il problema, parcheggio %EAX nella pila e lo riprendo a conti fatti:
#uso %EAX
PUSH %EAX
IN 0x001A, %AL
…
POP %EAX # riprendo I conti che stavo facendo
1.3 PUSHF
FORMATO: PUSHF
AZIONE: Salva nella pila corrente due word di cui una è costituita da una copia del contenuto
del registro dei flag EF.
FLAG di cui viene modificato il contenuto: Nessuno.
Perché esiste questa istruzione? Per due buoni motivi:
a) Perché il registro dei flag non è indirizzabile come operando di un’istruzione. Quindi, se
voglio leggerne il contenuto, l’unica cosa che posso fare è salvarlo in pila e recuperarlo da lì
PUSHF
POP %EAX # surroga MOV %EF, EAX (che non esiste)
1.4 POPF
FORMATO: POPF
AZIONE: Rimuove dalla pila corrente una doppia word e con i bit n. 11, 7, 6 e 0 di essa,
rinnova il contenuto dei corrispondenti flag del registro EF
FLAG di cui viene modificato il contenuto: Tutti.
1.5 PUSHA
FORMATO: PUSHA
AZIONE: Salva nella pila corrente una copia del contenuto degli 8 registri generali a 16 bit,
rispettando il seguente ordine: AX, CX, DX, BX, SP, BP, SI, DI.
FLAG di cui viene modificato il contenuto: Nessuno.
1.6 PUSHAD
FORMATO: PUSHAD
AZIONE: Salva nella pila corrente una copia del contenuto degli 8 registri generali a 32 bit,
rispettando il seguente ordine: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI.
FLAG di cui viene modificato il contenuto: Nessuno.
1.7 POPA
FORMATO: POPA
AZIONE: Rimuove dalla pila 8 word e con esse rinnova il contenuto degli 8 registri generali a
16 bit, rispettando il seguente ordine: DI, SI, BP, SP, BX, DX, CX, AX.
FLAG di cui viene modificato il contenuto: Nessuno.
1.8 POPAD
FORMATO: POPAD
AZIONE: Rimuove dalla pila 8 long e con essi rinnova il contenuto degli 8 registri generali a
32 bit, rispettando il seguente ordine: EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX.
FLAG di cui viene modificato il contenuto: Nessuno.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 26/S3
Titolo: ESEMPI DI DOMANDE DI ESAME E CHIARIMENTO SULL’ USO DELLE DISPENSE DELL’ ASSEMBLY
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Attenzione:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni Aritmetiche I
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27
Titolo: Principali istruzioni ALU II
Attività n°: 1
• alcune di esse (ma non tutte) considerano gli operandi indifferentemente come
naturali che come numeri interi, in quanto l’algoritmo che devono eseguire per
modificare il destinatario è identico nei due casi (è una proprietà della
rappresentazione in C2: la somma delle rappresentazioni è pari alla
rappresentazione della somma, lo stesso vale per la differenza). L’istruzione di
somma per esempio, esegue quindi l’algoritmo giusto quale che sia l’interpretazione
delle stringhe di bit che le vengono passate come operandi.
• Tali istruzioni modificano i flag. Nel modificare i flag, considerano due algoritmi: uno
che va bene se gli operandi sono numeri naturali¸ ed uno che va bene se sono
interi.
ADD
FORMATO: ADD source, destination
AZIONE: Modifica l’operando destinatario sommandovi l’operando sorgente (il risultato
dell’operazione è consistente sia se gli operandi sono interpretati come numeri naturali sia se gli
operandi sono interpretati come numeri interi); mette ad 1 il contenuto del flag CF se, interpretando
gli operandi come numeri naturali, si è verificato un riporto; mette ad 1 il contenuto del flag OF se,
interpretando gli operandi come numeri interi, si è verificato un traboccamento.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale ADD 0x00002000,%EDX
Registro Generale, Memoria ADD %CL,0x12AB1024
Registro Generale, Registro Generale ADD %AX,%DX
Immediato, Memoria ADDB $0x5B,(%EDI)
Immediato, Registro Generale ADD $0x54A3,%AX
Per quanto riguarda il calcolo del risultato, è come se scrivessi dest += src in C++. Vediamo in
dettaglio come si fa la somma.
In base 2 funziona come in base 10, secondo l’algoritmo imparato alle elementari
β = 10 . L’algoritmo consiste in:
1 0 1
- sommare le cifre di pari posizione singolarmente, partendo
7 2 4 + dalle meno significative
- se la somma di due cifre non è rappresentabile con una sola
8 3 9
cifra, usare il riporto per la coppia di cifre successive
15 6 13 - Il riporto vale sempre 0 o 1. Per la prima coppia di cifre
(quelle meno significative), possiamo assumerlo nullo.
1 5 6 3
Si osservi che, visto che l’ultima somma ha generato un riporto, il risultato non è rappresentabile
sul numero di cifre (3) degli operandi. In Inglese, riporto si dice carry.
Questo algoritmo non dipende dalla base di rappresentazione, e funziona pari pari in base due.
1 1 1
In questo caso sommo le due stringhe di bit 101 (5, se
1 0 1 + rappresentato come naturale) e 011 (3, se rappresentato come
naturale) su tre bit, ed il risultato sta su 4 bit. Questo è
0 1 1
testimoniato dalla presenza di un carry.
10 10 10
1 0 0 0
Quando faccio la somma su 8, 16, 32 bit, l’ultimo riporto finisce in CF. Se (nella mia testa) i
numeri sommati erano naturali, il fatto che CF=1 significa che il risultato che ho nel destinatario
non è corretto, in quanto il risultato non può essere rappresentato sul numero di bit degli operandi.
Supponiamo adesso che le stringhe di tre bit che ho scritto siano la rappresentazione di numeri
interi in C2. In questo caso,
- ( )
il primo è la rappresentazione di − 101 + 1 = − ( 010 + 1) = −011 , cioè di -3
- il secondo è la rappresentazione di +3
La somma dei due numeri fa zero. La somma delle due rappresentazioni su 3 bit fa anch’essa
zero, come deve essere. Il fatto che ci sia un riporto non nullo è irrilevante ai fini della correttezza
del risultato. Il risultato, rappresentato su 3 bit, è perfettamente corretto.
Infatti, CF va guardato soltanto se i numeri vanno interpretati come naturali, e non come interi.
Per i numeri interi, invece, il criterio per stabilire la rappresentabilità del risultato è un altro, ed è
sostanzialmente basato sui segni degli operandi.
Sappiamo che
- in C2 il bit più significativo dà il segno: 0 se il numero è positivo, 1 se negativo.
- Un numero è rappresentabile in C2 su N bit se è nell’intervallo ⎡⎣−2N −1;2N −1 −1⎤⎦ .
X
2N −1 (111...111)
2 N −1 (100...000 )
N −1
2 −1 ( 011...111)
x
N −1
−2 2 N −1 − 1
Quindi:
- se i segni degli operandi sono discordi (cioè uno positivo e uno negativo) e gli operandi stanno
in quell’intervallo, la loro somma è sempre rappresentabile, in quanto starà per forza all’interno
dell’intervallo.
- se i segni degli operandi sono concordi, la loro somma può non essere rappresentabile. In
particolare, la somma sarà rappresentabile se e solo se la rappresentazione della somma è
concorde con gli operandi. Se sommo le rappresentazioni di due numeri positivi, posso ottenere
la rappresentazione di un numero negativo. In questo caso il risultato non può essere corretto.
Lo stesso, se sommo le rappresentazioni di due numeri negativi su N bit, posso ottenere la
rappresentazione di un numero positivo
Nei due casi precedenti, il flag di overflow OF viene messo a zero. Altrimenti viene messo ad 1, ad
indicare che il risultato (interpretato come intero) non è corretto.
Esempio (su 3 bit). In entrambi i casi, la rappresentazione del risultato ha un segno diverso da
quello degli operandi. In entrambi i casi c’è overflow, ed il bit OF è settato.
1 0 1
0 1 1
0 1 1 + 1 0 1 +
0 1 1 1 0 1
10 01 10
01 11 10
1 1 0 0 1 0
Esercizio per casa: dimostrare che le due seguenti condizioni sono equivalenti per interi
rappresentati in C2:
condizione 1: gli ultimi due riporti di una somma sono identici
condizione 2: gli operandi sono discordi, oppure sono concordi ma il bit più significativo della
somma è uguale a quello di entrambi gli operandi.
caso presente), vuol dire che interpretando il contenuto del destinatario come numero
intero, tale numero è negativo. Ricordo che il bit più significativo dei numeri interi negativi
vale sempre 1.
Operandi Esempi
Memoria, Registro Generale ADC 0x00002000,%EDX
Registro Generale, Memoria ADC %CL,0x12AB1024
Registro Generale, Registro Generale ADC %AX,%DX
Immediato, Memoria ADCB $0x5B,(%EDI)
Immediato, Registro Generale ADC $0x54A3,%AX
La ADC somma due operandi ed il carry flag. L’algoritmo di somma che usiamo (che vale in
qualunque base, sia 2 che 10) è modulare. Le due cose che devo saper fare sono:
- la somma di 2 cifre
- calcolare un riporto (0 o 1) per la coppia di cifre successive.
Se devo sommare due numeri a 1024 bit, non lo posso fare (perché ho al massimo operandi a 32
bit)? Certo che posso. Sommo i primi 32 bit (quelli meno significativi), poi vado avanti a
considerando gruppi di 32 biy scorrendo le cifre verso sinistra. L’unica cosa che mi devo ricordare è
che ogni somma può generare un riporto, che viene messo nel flag CF. Tale riporto va
considerato in tutte le somme successive alla prima. Questa istruzione serve appunto a fare questo.
INCREMENT
FORMATO: INC destination
Operandi Esempi
Memoria INCB (%ESI)
Registro Generale INC %CX
Che bisogno c’è di questa istruzione? (si può infatti usare sempre ADD al suo posto). Un tempo era
più veloce adesso anche la ADD si fa in un batter d’occhio. In genere, quest’istruzione (e la DEC più
avanti) viene tenuta per tenere il conto delle iterazioni dentro un ciclo (simile alla variabile di
conteggio nel for). Per motivi di tradizione stilistica, in genere si usa %ECX (o %CX, o %CL) come
registro di conteggio all’interno di un ciclo.
Soffermiamoci un attimo sul fatto che non viene aggiornato CF. Non è un limite. Infatti,
l’incremento che produrrebbe un carry è quello che si fa a partire da un operando pari a 111…111.
In questo caso, dopo l’incremento l’operando vale zero. Quindi, posso testare direttamente ZF.
SUBTRACT
FORMATO: SUB source, destination
AZIONE: Modifica l’operando destinatario sottraendovi l’operando sorgente (il risultato
dell’operazione è consistente sia se gli operandi sono interpretati come numeri naturali sia se gli
operandi sono interpretati come numeri interi); mette ad 1 il contenuto del flag CF se, interpretando
gli operandi come numeri naturali, si è verificato un prestito; mette ad 1 il contenuto del flag OF se,
interpretando gli operandi come numeri interi, si è verificato un traboccamento.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale SUB 0x00002000,%EDX
Registro Generale, Memoria SUB %CL,0x12AB1024
Registro Generale, Registro Generale SUB %AX,%DX
Immediato, Memoria SUBB $0x5B,(%EDI)
Immediato, Registro Generale SUB $0x54A3,%AX
0 0 1
8 4 4 -
6 3 9
2 0 -5
2 0 5
1 1 0
1 0 1 -
1 1 0
-1 -1 1
1 1 1
Ancora una volta, se le stringhe di bit contenute negli operandi rappresentano numeri naturali, per
vedere se il risultato è corretto o meno bisogna andare a vedere il carry flag (0: il risultato è ancora
un numero naturale, 1: il risultato non è un naturale). Se invece rappresentano numeri interi, il carry
è irrilevante, e bisogna andare a vedere l’overflow flag. Nell’esempio appena fatto, se le due
stringhe di bit rappresentano naturali il risultato non è corretto (c’è un prestito uscente, che va nel
flag CF) . Se, invece, rappresentano interi, il risultato è perfettamente corretto (e pari a -1).
Per quanto riguarda i numeri interi:
- la sottrazione di numeri concordi è sempre rappresentabile (non c’è mai overflow)
- la sottrazione di numeri discordi è rappresentabile soltanto se il risultato su N bit ha lo stesso
segno del minuendo, altrimenti c’è overflow.
Operandi Esempi
Memoria, Registro Generale SBB 0x00002000,%EDX
Registro Generale, Memoria SBB %CL,0x12AB1024
Registro Generale, Registro Generale SBB %AX,%DX
Immediato, Memoria SBBW $0x255B,(%EDI)
Immediato, Registro Generale SBB $0x54A3,%AX
DECREMENT
FORMATO: DEC destination
AZIONE: Equivale all’istruzione SUB $1,destination con la sola differenza che il
contenuto del flag CF non viene modificato.
FLAG di cui viene modificato il contenuto: OF, SF e ZF.
Operandi Esempi
Memoria DECB (%EDI)
Registro Generale DEC %CX
Soffermiamoci un attimo sul fatto che non viene aggiornato CF. Non è un limite. Infatti, il
decremento che produrrebbe un borrow (registrato nel flag CF) è quello che si fa a partire da un
operando pari a 00…000. In questo caso, prima del decremento l’operando vale zero. Quindi,
posso testare direttamente ZF.
NEGATE
FORMATO: NEG destination
AZIONE: Interpreta l’operando destinatario come un numero intero e lo sostituisce con il suo
opposto. Qualora l’operazione non sia possibile, mette ad 1 il contenuto del flag OF. Mette ad 1 il
contenuto del flag CF eccetto quando l’operando è zero: in tal caso lo mette a 0.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria NEGB (%EDI)
Registro Generale NEG %CX
che non ha un opposto. Se nel destinatario c’è quel numero, il risultato sarà quindi errato, e me ne
accorgo testando il flag OF.
COMPARE
FORMATO: CMP source, destination
AZIONE: Verifica se l’operando destinatario è maggiore, uguale o minore dell’operando
sorgente, sia interpretando gli operandi come numeri naturali che come numeri interi. Aggiorna poi
il contenuto dei flag tenendo conto del risultato della verifica (i due operandi rimangono inalterati).
L’esatto algoritmo di aggiornamento del contenuto dei flag è noioso da descriversi:
l’aggiornamento è comunque consistente con l’interpretazione che del contenuto dei flag sarà data
dall’istruzione di salto condizionato, che in un programma sensato segue sempre l’istruzione CMP.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale CMP 0x00002000,%EDX
Registro Generale, Memoria CMP %CL,0x12AB1024
Registro Generale, Registro Generale CMP %AX,%DX
Immediato, Memoria CMPB $0x5B,(%EDI)
Immediato, Registro Generale CMP $0x45AB54A3,%EAX
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni Aritmetiche II
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S1
Titolo: Principali istruzioni ALU II
Attività n°: 1
MULTIPLY
FORMATO: MUL source
AZIONE: Considera l’operando sorgente come un moltiplicando e l’operando destinatario
(implicito) come un moltiplicatore ed effettua l’operazione di moltiplicazione, interpretando gli
operandi come numeri naturali. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (moltiplicando) è:
1) ad 8 bit, allora considera il contenuto di AL come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 16 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in AX.
2) a 16 bit, allora considera il contenuto di AX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 32 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in DX_AX.
3) a 32 bit, considera il contenuto di EAX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 64 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in EDX_EAX.
ii) Se da un’analisi della metà più significativa del prodotto (in AH, DX, EDX a seconda dei
casi) deduce che il risultato stesso non è esprimibile su un numero di bit pari a quello del molti-
plicando e del moltiplicatore, allora mette ad 1 il contenuto dei flag CF e OF.
FLAG di cui viene modificato il contenuto: CF, OF: vengono messi a 1 se il risultato non sta sul
numero di bit di source, e a zero altrimenti.SF e ZF sono indefiniti.
Operandi Esempi
Memoria MULB (%ESI)
Registro Generale MUL %ECX
INTEGER MULTIPLY
FORMATO: IMUL source
AZIONE: Considera l’operando sorgente come un moltiplicando e l’operando destinatario
(implicito) come un moltiplicatore ed effettua l’operazione di moltiplicazione, interpretando gli
operandi come numeri interi. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (moltiplicando) è:
1) ad 8 bit, allora considera il contenuto di AL come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 16 bit (in modo che non possa mai ve-
rificarsi traboccamento) e mette tale prodotto in AX.
2) a 16 bit, allora considera il contenuto di AX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 32 bit (in modo che non possa mai ve-
rificarsi traboccamento) e mette tale prodotto in DX_AX.
3) a 32 bit, considera il contenuto di EAX come il moltiplicatore implicito; effettua
l’operazione di moltiplicazione generando un prodotto a 64 bit (in modo che non possa mai
verificarsi traboccamento) e mette tale prodotto in EDX_EAX.
ii) Se da un’analisi della metà più significativa del prodotto (in AH, DX, EDX a seconda dei
casi) deduce che il risultato stesso non è rappresentabile su un numero di bit pari a quello del
moltiplicando e del moltiplicatore, allora mette ad 1 il contenuto dei flag CF e OF.
FLAG di cui viene modificato il contenuto: CF, OF, SF (non attendibile) e ZF (non attendibile).
Operandi Esempi
Memoria IMULB (%ESI)
Registro Generale IMUL %ECX
Fa le stesse cose di quella del caso precedente, ma dovete usarla se i vostri operandi contengono
rappresentazioni di interi invece che naturali.
DIVIDE
FORMATO: DIV source
AZIONE: Considera l’operando sorgente come un divisore e l’operando destinatario (implicito)
come un dividendo ed effettua l’operazione di divisione, interpretando gli operandi come numeri
naturali. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (divisore) è:
1) ad 8 bit, allora considera il contenuto di AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto ad 8 bit e li mette, rispettivamente, in
AL e in AH.
2) a 16 bit, allora considera il contenuto di DX_AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto a 16 bit e li mette, rispettivamente, in
AX e in DX.
3) a 32 bit, allora considera il contenuto di EDX_EAX come il dividendo implicito;
effettua l’operazione di divisione producendo un quoziente ed un resto a 32 bit e li mette,
rispettivamente, in EAX e in EDX.
ii) Se nell’effettuare l’operazione di divisione riconosce che il quoziente non è esprimibile su
un numero di bit pari a quello su cui è espresso il divisore, allora genera un’interruzione interna in
conseguenza della quale viene messo in esecuzione un opportuno sottoprogramma, noto come
sottoprogramma n. 0. Il contenuto dei flag e dei registri destinati a contenere il quoziente ed il resto
è, in tal caso, non significativo.
FLAG di cui viene modificato il contenuto: Tutti, ma in modo non attendibile.
Operandi Esempi
Memoria DIVB (%ESI)
Registro Generale DIV %ECX
Per questa valgono le stesse considerazioni fatte per la MUL, con qualche problema in più. Tanto
per cominciare, una divisione non ha un risultato, ma due: quoziente e resto. Vediamo quali sono
gli intervalli di rappresentabilità:
X div Y -> quoziente Q e resto R
- 0 ≤ R < Y : il resto sta per forza sullo stesso n. di bit del divisore
- 0 ≤ Q ≤ X : (infatti, posso dividere anche per Y = 1 ). Quindi, in teoria, il n. di bit del quoziente
dovrebbe essere pari a quello del dividendo.
In pratica, le tre versioni di divisione possibili sono queste:
- a 8 bit: AL = quoziente (AX / source); AH = resto (AX / source);
- a 16 bit: AX = quoziente (DX_AX / source); DX = resto (DX_AX / source);
- a 32 bit: EAX = quoziente (EDX_EAX/source); EDX = resto (EDX_EAX/source);
source dimensione
(divisore) dividendo dividendo quoziente resto
8 bit 16 %AX %AL %AH
16 bit 32 %DX_%AX %AX %DX
32 bit 64 %EDX_%EAX %EAX %EDX
Come si concilia questo con il fatto che il quoziente può essere grande quanto il dividendo? Che
succede se non c’entra? Se il quoziente non c’entra, parte un’eccezione (la stessa che partirebbe se
aveste diviso per zero) ed il vostro programma si inchioda. Non è qualcosa che può essere testato a
posteriori guardando i flag (come per l’addizione/sottrazione), deve essere evitato a priori. È il
programmatore che si deve sincerare che il quoziente stia sul numero di bit dove lo voglio
mettere.
Esempio:
MOV $3, %CL
MOV $15000, %AX
DIV %CL
Il quoziente è 5000, che non sta di sicuro su %AL. Come fa il programmatore a sincerarsi che questo
non accada? In questo caso si vede al volo, ma in un caso generale il dividendo ed il divisore
potrebbero provenire dalla memoria, da registri di interfaccia, da altri conti svolti in precedenza.
Lo fa selezionando la versione opportuna della DIV. In questo caso, devo passare a 16 bit e
scrivere:
MOV $3, %CX
MOV $15000, %AX
MOV $0, %DX
DIV %CX
Se ci si riflette un attimo, si vede che è sempre possibile trovare una versione della divisione che
permette di dividere qualunque coppia di operandi che stia su 32 bit. Alla peggio, basta usare la
divisione più grande.
Nota: Non ci sono mai problemi di rappresentabilità per il resto, visto che il numero di bit dove lo
voglio mettere è sempre uguale al numero dei bit del divisore, ed il resto della divisione tra naturali
è per definizione minore del divisore.
INTEGER DIVIDE
FORMATO: IDIV source
AZIONE: Considera l’operando sorgente come un divisore e l’operando destinatario (implicito)
come un dividendo ed effettua l’operazione di divisione, interpretando gli operandi come numeri
interi. Più in dettaglio, compie le azioni che seguono.
i) Se l’operando sorgente (divisore) è:
1) ad 8 bit, allora considera il contenuto di AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto ad 8 bit e li mette, rispettivamente, in
AL e in AH.
2) a 16 bit, allora considera il contenuto di DX_AX come il dividendo implicito; effettua
l’operazione di divisione producendo un quoziente ed un resto a 16 bit e li mette, rispettivamente, in
AX e in DX.
3) a 32 bit, allora considera il contenuto di EDX_EAX come il dividendo implicito;
effettua l’operazione di divisione producendo un quoziente ed un resto a 32 bit e li mette,
rispettivamente, in EAX e in EDX.
ii) Se nell’effettuare l’operazione di divisione riconosce che il quoziente non è esprimibile su
un numero di bit pari a quello su cui è espresso il divisore, allora genera un’interruzione interna in
conseguenza della quale viene messo in esecuzione un opportuno sottoprogramma, noto come
sottoprogramma n. 0. Il contenuto dei flag e dei registri destinati a contenere il quoziente ed il resto
è, in tal caso, non significativo.
FLAG di cui viene modificato il contenuto: Tutti, ma in modo non attendibile.
Operandi Esempi
Memoria IDIVB (%ESI)
Registro Generale IDIV %ECX
Fa le stesse cose di quella del caso precedente, ma dovete usarla se i vostri operandi contengono
rappresentazioni di interi invece che naturali.
Una nota sui segni degli operandi e dei risultati: nella divisione intera il resto ha sempre il segno
del dividendo, ed è in modulo minore del divisore. Ciò vuol dire che il quoziente viene sempre
approssimato all’intero più vicino allo zero. Questa cosa è difficile da accettare, perché
inconsistente con le nozioni di algebra che possediamo. Però è così, quindi bisogna farcene una
ragione.
Esempio:
- -7 div 3: quoziente -2; resto -1
- 7 div -3: quoziente -2; resto +1.
Se avete bisogno di qualcosa di diverso (ad esempio, di un resto sempre positivo e minore in
modulo del divisore), conviene sincerarsi prima che il dividendo abbia segno positivo, cambiando
di segno ad entrambi gli operandi se necessario.
Ci sono infine alcune istruzioni di conversione, o meglio di estensione di campo per numeri interi.
Quest’ultima è l’operazione con la quale si rappresenta un numero di N cifre usando un numero
maggiore di cifre. Tutte queste istruzioni lavorano sul registro EAX o su parti di esso.
Per i numeri naturali, l’estensione di campo si fa aggiungendo degli zeri in testa, in base 10 come in
base 2. Questo può essere fatto con delle semplici MOV, o con istruzioni logiche che poi vedremo
(non c’è bisogno di istruzioni ad hoc). Per i numeri interi rappresentati in complemento a 2, la
legge da seguire è necessariamente diversa. Se ho un numero negativo su 8 bit, che quindi
comincia con 1, è chiaro che – se lo voglio estendere su 16 bit – non posso limitarmi ad aggiungere
zeri in testa, perché il numero che viene fuori sarebbe positivo. La legge per gli interi è ripetere il
bit più significativo. Tale legge è sufficientemente intuitiva. Infatti, se la rappresentazione di un
numero comincia per 1, vuol dire che è la rappresentazione di un numero negativo. In tal caso, il
( )
numero rappresentato è − 11001 + 1 . Se lo voglio estendere, devo fare in modo che, una volta
complementato, il suo valore non cambi. Quindi devo aggiungere in testa degli 1, che una volta
complementati diventano zeri.
Le seguenti istruzioni fanno appunto questo.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni di rotazione e traslazione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S2
Titolo: Principali istruzioni ALU II
Attività n°: 1
Dove src è il numero di volte che l’operazione OPCODE deve essere ripetuta sul destinatario. In
più, src deve essere un operando immediato o il contenuto del registro CL, e deve valere al
massimo 31. Nell’istruzione uno ci può scrivere cosa gli pare, ma tanto il processore considera
soltanto i 5 bit più bassi del src, e niente altro, quindi se ci scrivo 32 è come se ci scrivessi zero
(il che implica sempre non fare niente di significativo). Nel formato ad un solo operando è come se
si assumesse un operando sorgente implicito pari ad 1.
Si noti che in questo caso le istruzioni hanno operandi di lunghezza diversa. Non è un problema,
visto che hanno un significato completamente diverso. Nel caso sia necessario inserire un suffisso,
questo deve concordare con l’operando destinatario, ovviamente.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0
CF
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Immediato, Registro Generale SHL $1,%EAX
Immediato, Memoria SHLB $7,0x00002000
Registro CL, Registro Generale SHL %CL,%BX
Registro CL, Memoria SHLL %CL,(%EDI)
Memoria SHLL (%EDI)
Registro Generale SHL %AX
Una cosa da ricordare bene è che, se src>1, il flag CF viene sovrascritto più volte, e quindi quello
che si vede è l’ultima scrittura. Quindi, non è affidabile come misura della rappresentabilità del
destinatario se src>1.
Le operazioni di shift (destro e sinistro) servono anche a moltiplicare e dividere per una potenza
della base (cioè di due). Così come in base 10 moltiplicare e dividere per 10 significa aggiungere
uno zero in fondo o togliere una cifra (eventualmente aggiungendo zeri in cima), lo stesso vale in
base 2 (ed in qualunque base). Visto che una SHL è molto più veloce (e dà molti meno problemi) di
una MUL, è necessario ricordarselo.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0
CF
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Immediato, Registro Generale SAL $1,%EAX
Immediato, Memoria SALB $7,0x00002000
Registro CL, Registro Generale SAL %CL,%BX
Registro CL, Memoria SALL %CL,(%EDI)
Memoria SALL (%EDI)
Registro Generale SAL %AX
Questa è identica alla precedente, salvo per un importante particolare: nel fare i vari shift, controlla
se il bit più significativo cambia valore. Se è così almeno una volta, setta OF. Infatti, se il bit più
significativo (che per gli interi denota il segno) cambia valore, vuol dire che si sta passando da un
numero negativo ad uno positivo o viceversa, il che è la spia del fatto che il risultato non è corretto
se interpretato come numero intero. In particolare, non sarà la rappresentazione del destinatario
moltiplicato per 2src.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0
CF
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Immediato, Registro Generale SHR $1,%EAX
Immediato, Memoria SHRB $7,0x00002000
Registro CL, Registro Generale SHR %CL,%BX
Registro CL, Memoria SHRL %CL,(%EDI)
Memoria SHRL (%EDI)
Registro Generale SHR %AX
Questa fa l’operazione opposta della sua omologa. Corrisponde ad una divisione per 2src di un
operando naturale con approssimazione per difetto, che è coerente con quello che fa l’istruzione
DIV. Si osservi che vengono inseriti zeri in testa.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CF
Questa fa l’operazione opposta della sua omologa. Corrisponde al calcolo del quoziente di una
divisione per 2src di un operando intero. Infatti, invece di inserire zeri in testa come nel caso
precedente, si inserisce nuovamente il bit più significativo (si mantiene, cioè, il segno
dell’operando). Attenzione, perché questo non è lo stesso quoziente che calcolerebbe la IDIV.
Infatti, con la SAR abbiamo sempre approssimazione verso meno infinito del quoziente, qualora la
divisione abbia resto. Nella IDIV, invece, l’approssimazione del quoziente è sempre verso lo zero.
SAR IDIV
-3 -2 -1 0
C2, 8bit
-5 256-5=251 1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1
Le seguenti istruzioni di rotazione sono banali. Molto semplicemente, shiftano tutti i bit
reinserendo dalla parte opposta quello che è rimasto fuori. Ne esistono quattro: ruotare a dx/sx,
passando o meno attraverso il CF (si può, infatti, usare il CF come N+1-simo bit nella rotazione).
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CF
CF
Operandi Esempi
Immediato, Registro Generale RCL $1,%EAX
Immediato, Memoria RCLB $7,0x00002000
Registro CL, Registro Generale RCL %CL,%BX
Registro CL, Memoria RCLL %CL,(%EDI)
Memoria RCLL (%EDI)
Registro Generale RCL %AX
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CF
Operandi Esempi
Immediato, Registro Generale RCR $1,%EAX
Immediato, Memoria RCRB $7,0x00002000
Registro CL, Registro Generale RCR %CL,%BX
Registro CL, Memoria RCRL %CL,(%EDI)
Memoria RCRL (%EDI)
Registro Generale RCL %AX
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S3
Titolo: Principali istruzioni ALU II
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Principali Istruzioni ALU II:
Istruzioni Logiche
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 27/S3
Titolo: Principali istruzioni ALU II
Attività n°: 1
1.1.1 NOT
FORMATO: NOT destination
AZIONE: Modifica l’operando destinatario applicando a ciascuno dei suoi bit l’operazione
logica not.
FLAG di cui viene modificato il contenuto: Nessuno.
Operandi Esempi
Memoria NOTL (%ESI)
Registro Generale NOT %CX
1.1.2 AND
FORMATO: AND source, destination
AZIONE: Sostituisce ciascun bit dell’operando destinatario con il risultato dell’operazione
logica and tra il bit stesso ed il corrispondente bit dell’operando sorgente; mette a 0 il contenuto dei
flag CF ed OF.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale AND 0x00002000,%EDX
Registro Generale, Memoria AND %CL,0x12AB1024
Registro Generale, Registro Generale AND %AX,%DX
Immediato, Memoria ANDB $x5B,(%EDI)
Immediato, Registro Generale AND $0x45AB54A3,%EAX
1.1.3 OR
FORMATO: OR source, destination
AZIONE: Sostituisce ciascun bit dell’operando destinatario con il risultato dell’operazione
logica or tra il bit stesso ed il corrispondente bit dell’operando sorgente; mette a 0 il contenuto dei
flag CF ed OF.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale OR 0x00002000,%EDX
Registro Generale, Memoria OR %CL,0x12AB1024
Registro Generale, Registro Generale OR %AX,%DX
Immediato, Memoria ORB $0x5B,(%EDI)
Immediato, Registro Generale OR $0x45AB54A3,%EAX
1.1.4 XOR
FORMATO: XOR source, destination
AZIONE: Sostituisce ciascun bit dell’operando destinatario con il riisultato dell’operazione
logica xor tra il bit stesso ed il corrispondente bit dell’operando sorgente; mette a 0 il contenuto dei
flag CF ed OF.
FLAG di cui viene modificato il contenuto: Tutti.
Operandi Esempi
Memoria, Registro Generale XOR 0x00002000,%EDX
Registro Generale, Memoria XOR %CL,0x12AB1024
Registro Generale, Registro Generale XOR %AX,%DX
Immediato, Memoria XORB $0x5B,(%EDI)
Immediato, Registro Generale XOR $0x45AB54A3,%EAX
Esempio: voglio sommare due numeri naturali, uno in AL, l’altro in EBX.
MOV $5, %AL
MOV $100000, %EBX
AND $0x000000FF, %AL
ADD %EAX, %EBX
1.1.5 TEST
FORMATO: TEST source, destination
AZIONE: Esegue l’AND bit a bit tra operando sorgente e destinatario, e modifica i flag SF e ZF
di conseguenza. CF ed OF sono messi a zero. Lascia inalterato l’operando destinatario. Nei
programmi sensati, un’istruzione di salto condizionato (frequentemente del tipo JZ/JNZ) segue
sempre un’istruzione di TEST.
FLAG di cui viene modificato il contenuto: tutti.
Operandi Esempi
Memoria, Registro Generale TEST 0x00002000,%EDX
Registro Generale, Memoria TEST %CL,0x12AB1024
Registro Generale, Registro Generale TEST %AX,%DX
Immediato, Memoria TESTB $0x5B,(%EDI)
Immediato, Registro Generale TEST $0x45AB54A3,%EAX
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28
Titolo: Introduzione
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Istruzioni di salto
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S1
Titolo: Istruzioni di salto
Attività n°: 1
JUMP
FORMATO: JMP %EIP ± displacement
JMP *extended_register
JMP *memory
L’istruzione JMP serve a saltare da qualche altra parte, ed in questo è del tutto analoga ad una goto
del C++ (se vi è stata descritta). Normalmente viene messa alla fine di un ciclo, per ritornare
all’inizio del ciclo. L’indirizzo dell’istruzione cui si salta può essere:
- specificato in modo relativo rispetto al contenuto corrente di %EIP (osservare che, quando viene
eseguita un’istruzione, il contenuto corrente di %EIP è l’indirizzo dell’istruzione successiva)
- contenuto in un registro esteso (che va scritto con l’* davanti)
- specificato con uno dei qualunque dei formati di indirizzamento di memoria (scritto con l’*
davanti).
Di fatto, quando si programma in Assembler, si usa soltanto il primo indirizzamento, ma invece
di dover contare a mano i byte si specificano delle etichette simboliche. Però esistono anche gli altri
modi, ed è bene saperlo.
La JMP può essere usata per inchiodare il processore. Basta specificare (in modo relativo o
assoluto) lo stesso indirizzo dell’istruzione che viene eseguita, ed il processore entra in un loop
infinito.
Le istruzioni di salto condizionato seguono sempre qualche istruzione che tocca i flag, in quanto
le condizioni che si possono specificare hanno tutte a che fare con i flag. Tipicamente (ma non
esclusivamente) seguono una CMP. Detta meglio: dopo una CMP si ritrova sicuramente un salto
condizionato, in qualunque programma sensato. Visto che però anche diverse altre istruzioni
toccano i flag (ad esempio, quelle aritmetiche e logiche), i salti condizionati possono stare anche
dopo quelle.
I salti condizionati sono di quattro tipi:
- flag a 1/0
- relazioni tra naturali / tra interi
- contenuto del registro CX/ECX
1) flag a 1 o a 0: JC/JNC, JS/JNS, JZ/JNZ, JO/JNO. Nel registro EF ci sono anche altri flag che
per adesso non consideriamo. Questi flag hanno comunque una coppia di salti condizionati
associati. Questo tipo di salti condizionati può essere usato dopo qualunque istruzione che tocca i
flag.
2) relazione tra naturali: JE, JNE, JA, JAE, JB, JBE. È bene limitarsi ad usare queste
soltanto dopo una CMP. In tal caso, le condizioni scritte nel codice operativo si riferiscono
all’operando destinatario della precedente CMP, e sono valide soltanto se l’interpretazione degli
operandi è quella di numeri naturali.
Esempio di porzione di programma:
CMP %AX, %BX Se il numero naturale contenuto in BX è
JAE … maggiore o uguale di quello in AX, salta
ist1 all’indirizzo specificato, altrimenti prosegue da
ist1.
L’esatto algoritmo che consente di vedere, dai flag, se un numero è maggiore/minore dell’altro
(interpretando la sua rappresentazione o come naturale o come intero), è noioso a descriversi (e di
scarsa utilità pratica). Facciamo un esempio giusto per vedere che è possibile.
Jump if Below or Equal: testa se, nella precedente CMP, dest<=src, interpretando le stringhe di
bit come numeri naturali. Come si fa questa cosa? La CMP sottrae src da dest, e quindi:
- se il risultato è nullo, va bene. Ma se è nullo ZF contiene 1
- se la sottrazione ha generato prestito, va bene (perché vuol dire che il destinatario era minore,
sempre stando all’interpretazione delle due stringhe di bit come naturali). Ma in questo caso CF
contiene 1
La condizione è quindi: CF=1 OR ZF=1.
3) relazione tra interi: JE, JNE, JG, JGE, JL, JLE. È bene limitarsi ad usare queste
soltanto dopo una CMP. In tal caso, le condizioni scritte nel codice operativo si riferiscono
all’operando destinatario della precedente CMP, e sono valide soltanto se l’interpretazione degli
operandi è quella di numeri interi. Si noti che le due - JE, JNE - sono valide sia per interi che per
naturali, visto che fanno il confronto bit a bit e che la rappresentazione è unica.
Esempio di porzione di programma:
CMP %AX, %BX Se il numero intero contenuto in BX è minore o
JLE … uguale di quello in AX, salta all’indirizzo
ist1 specificato, altrimenti prosegue da ist1.
L’esatto algoritmo che consente di vedere, dai flag, se un numero è maggiore/minore dell’altro
(interpretando la sua rappresentazione o come naturale o come intero), è noioso a descriversi (e di
scarsa utilità pratica). Facciamo un esempio giusto per vedere che è possibile.
Jump if Greater or Equal: testa se, nella precedente CMP, dest>=src, interpretando le stringhe di
bit come numeri interi. Come si fa questa cosa? La CMP sottrae src da dest, e quindi:
- se la differenza è rappresentabile OF=0. La condizione è vera se la differenza è positiva
(SF=0)
- se la differenza non è rappresentabile OF=1, il bit del segno è certamente sbagliato. Quindi, la
condizione è vera quando la differenza è negativa (SF=1)
La condizione è quindi: SF=OF.
Il buono è che non c’è bisogno di ricordarsi gli algoritmi, basta conoscere i codici mnemonici
delle istruzioni (e quelli sono facili da ricordare).
A livello di indirizzamento, per i salti condizionati è possibile solo specificare un salto relativo al
corrente valore di %EIP. Quando si programma in Assembler, comunque, ci si scrivono etichette
simboliche, e quindi non vediamo questo aspetto. Il termine displacement può stare su 8, 16, 32
bit, ed è una costante con segno. L’unica eccezione si ha per i salti che hanno CX/ECX come
condizione. In questo caso il termine displacement può stare soltanto su 8 bit. Non si può
usare una costante di dimensioni maggiori (non c’è il codice macchina per farlo). Questo vuol dire
che queste istruzioni possono essere usate per gestire loop piccoli. Se uno ha bisogno di scrivere un
loop di 200 istruzioni, deve scrivere il programma in modo diverso.
Un’ultima osservazione: ci sono diversi salti condizionati che hanno codice mnemonico diverso ma
rappresentano la stessa istruzione in linguaggio macchina. Ad esempio, JE e JZ fanno la stessa
cosa. Infatti, una CMP esegue una sottrazione, ed i due numeri sono uguali se il risultato è nullo, cioè
se il flag ZF è settato. Ci sono diverse coppie di condizioni identiche, che vi potete divertire a
trovare. Nel libro non sono descritte, ma esistono comunque a livello di codice mnemonico, le
versioni negate delle condizioni aritmetiche. Ad esempio, JNL esiste come alias di JGE, etc.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Gestione sottoprogrammi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S2
Titolo: Gestione sottoprogrammi
Attività n°: 1
Essi possono essere utilizzati per portare avanti uno stesso tipo
di elaborazione su operandi diversi o per suddividere
logicamente un programma complesso in un programma
principale ed in tanti sottoprogrammi, uno per ogni tipo di
elaborazione concettualmente indipendente.
CALL
FORMATO: CALL %EIP ± $displacement
CALL *extended_register
CALL *memory
1.1.1 RETURN
FORMATO: RET
AZIONE: Effettua il ritorno da un sottoprogramma. Più precisamente, rimuove un double word
dalla pila e con esso rinnova il contenuto di EIP.
FLAG di cui viene modificato il contenuto: Nessuno.
1.1.2 NO OPERATION
FORMATO: NOP
AZIONE: Termina senza compiere alcuna azione.
FLAG di cui viene modificato il contenuto: Nessuno.
Serve, in sostanza, a buttar via dei cicli di clock. Nel passato, a volte, era utile farlo per rispettare
delle temporizzazioni. Adesso serve a poco.
1.1.3 HALT
FORMATO: HLT
AZIONE: Provoca la cessazione di ogni attività del processore.
Il processore alterna la fase di fetch (in cui preleva un’istruzione) con quella di esecuzione
dell’istruzione che ha prelevato. Quando preleva un’istruzione HLT, smette di fare qualunque cosa,
e si pone in una condizione dalla quale si può uscire solo resettando la macchina.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Istruzioni di controllo e gestione sottoprogrammi:
Meccanismi di protezione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1
Ciò avviene per ragioni che saranno chiare dopo aver seguito il
modulo di sistemi operativi, quando si parlerà di protezione.
• IN e OUT
• HLT
In ogni caso, non saranno in esecuzione le istruzioni IN o una OUT (ad esempio, il
numero di cicli di clock sarà notevolmente superiore di quello che si può trovare
sui data sheet).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 28/S3
Titolo: Meccanismi di protezione
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Introduzione
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1
Nella pagina
http://www2.ing.unipi.it/~a080368/Programmazione/materiale.html (realizzata
dal prof. Stea e non più mantenuta) si possono trovare indicazioni su come
scaricare, installare e cominciare ad utilizzare l’ambiente di sviluppo per GAS
per diversi sistemi operativi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29
Titolo: Introduzione
Attività n°: 1
Nota:
L’ambiente di sviluppo del GAS è molto completo e dotato di vari strumenti sia per
lo sviluppo sia per il debugging del codice.
Non essendoci una prova pratica da svolgere al calcolatore durante l’esame, non
saranno approfonditi gli aspetti dell’ambiente di sviluppo. Verranno comunque
fornite le indicazioni minime per scrivere ed eseguire un programma al calcolatore.
.GLOBAL _main
.DATA
…
.TEXT
_main: NOP
…
RET
.GLOBAL _main
.DATA 0x00000100
dato: .LONG 0x0F0F0101 0x00000101
conteggio: .BYTE 0x00 0x00000102
0x00000103
.TEXT 0x00000104
_main: NOP …
MOVB $0x00,%CL 0x00000200 MOVB $0x00, %CL
MOVL dato, %EAX 0x00000202 MOVL 0x00000100, %EAX
comp: CMPL $0x00,%EAX 0x00000207 CMPL $0x0000000, %EAX
JE fine 0x0000020A JE %EIP+$0x07
SHRL %EAX 0x0000020C SHRL %EAX
ADCB $0x0, %CL 0x0000020E ADCB $0x00, %CL
JMP comp 0x00000211 JMP %EIP-$0x0C
fine: MOVB %CL, conteggio 0x00000213 MOVB %CL, 0x00000104
RET 0x00000218 …
Commento dettagliato del programma:
dato: .LONG 0x0F0F0101
conteggio: .BYTE 0x00
JE fine
…
fine: MOVB %CL, conteggio
Stessa cosa di prima. Attenzione ad una sottigliezza. Il nome fine non è stato dichiarato al
momento del suo utilizzo. In Assembler, i nomi possono essere usati prima di essere stati
definiti. Ci pensa l’assemblatore a risolvere il tutto (fa due passate: nella prima controlla che i nomi
riferiti ci siano tutti, nella seconda fa la traduzione vera e propria). Il motivo per cui ciò è necessario
è ovvio: altrimenti non sarebbe possibile scrivere codice con salti in avanti, come quello che c’è in
questo programma. Dall’altra parte, questo consente di scrivere programmi di devastante
incomprensibilità. Ad esempio, nessuno obbliga a mettere tutte le dichiarazioni di variabili
raggruppate in cima, né a mettere la definizione delle costanti prima del loro primo utilizzo, magari
insieme alle dichiarazioni di variabile. Questi stili di programmazione vanno evitati.
Importante
La regola è: prima le dichiarazioni di costante/variabile, tutte insieme, nell’ordine in cui le
accetterebbe un compilatore C++, poi la parte codice.
L’unico caso in cui è lecito (stilisticamente) usare un’etichetta non ancora definita è quello di salto
in avanti nel codice. Non va fatto in nessun altro caso.
È inoltre perfettamente lecito scrivere:
nome1: [\CR]
nome2: KEYWORD operandi # commento [\CR]
Con il che la stessa variabile (o la stessa istruzione) può essere riferita con entrambi i nomi nome1,
nome2 (pessima prassi, peraltro).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Descrizione delle direttive principali
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1
.GLOBAL _main
.DATA
…
.TEXT
_main: NOP
…
RET
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S1
Titolo: Descrizione delle direttive principali
Attività n°: 1
.GLOBAL _main
Si tratta di una direttiva. Le direttive iniziano con il punto. Questa
dice che il nome simbolico _main è visibile globalmente.
Attenzione
.DATA, .TEXT
Sono anche queste delle direttive, che stabiliscono che quanto
segue è la sezione dati o codice.
Si possono avere
- righe di solo commento
- righe con solo KEYWORD operandi
- righe con solo nome
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Primo esempio di un programma
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S2
Titolo: Primo esempio di un programma
Attività n°: 1
Esercizio
.GLOBAL _main
.DATA 0x00000100
dato: .LONG 0x0F0F0101 0x00000101
conteggio: .BYTE 0x00 0x00000102
0x00000103
.TEXT 0x00000104
_main: NOP …
MOVB $0x00,%CL 0x00000200 MOVB $0x00, %CL
MOVL dato, %EAX 0x00000202 MOVL 0x00000100, %EAX
comp: CMPL $0x00,%EAX 0x00000207 CMPL $0x0000000, %EAX
JE fine 0x0000020A JE %EIP+$0x07
SHRL %EAX 0x0000020C SHRL %EAX
ADCB $0x0, %CL 0x0000020E ADCB $0x00, %CL
JMP comp 0x00000211 JMP %EIP-$0x0C
fine: MOVB %CL, conteggio 0x00000213 MOVB %CL, 0x00000104
RET 0x00000218 …
Commento dettagliato del programma:
dato: .LONG 0x0F0F0101
conteggio: .BYTE 0x00
JE fine
…
fine: MOVB %CL, conteggio
Stessa cosa di prima. Attenzione ad una sottigliezza. Il nome fine non è stato dichiarato al
momento del suo utilizzo. In Assembler, i nomi possono essere usati prima di essere stati
definiti. Ci pensa l’assemblatore a risolvere il tutto (fa due passate: nella prima controlla che i nomi
riferiti ci siano tutti, nella seconda fa la traduzione vera e propria). Il motivo per cui ciò è necessario
è ovvio: altrimenti non sarebbe possibile scrivere codice con salti in avanti, come quello che c’è in
questo programma. Dall’altra parte, questo consente di scrivere programmi di devastante
incomprensibilità. Ad esempio, nessuno obbliga a mettere tutte le dichiarazioni di variabili
raggruppate in cima, né a mettere la definizione delle costanti prima del loro primo utilizzo, magari
insieme alle dichiarazioni di variabile. Questi stili di programmazione vanno evitati.
Importante
La regola è: prima le dichiarazioni di costante/variabile, tutte insieme, nell’ordine in cui le
accetterebbe un compilatore C++, poi la parte codice.
L’unico caso in cui è lecito (stilisticamente) usare un’etichetta non ancora definita è quello di salto
in avanti nel codice. Non va fatto in nessun altro caso.
È inoltre perfettamente lecito scrivere:
nome1: [\CR]
nome2: KEYWORD operandi # commento [\CR]
Con il che la stessa variabile (o la stessa istruzione) può essere riferita con entrambi i nomi nome1,
nome2 (pessima prassi, peraltro).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly I:
Esempi di domande di esame
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1
Per quali tipi di operazioni aritmetiche esistono due tipi di istruzioni diverse se gli
operandi sono interi o naturali? Perché?
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 29/S3
Titolo: Programmare in Assembly I
Attività n°: 1
Nella istruzione ADD come viene modificato il valore di dei FLAG CF e OF e che
significato assumono?
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Direttive per la dichiarazione di variabili
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1
.KEYWORD operandi
Dichiarazioni di variabili
Con questa tecnica, si possono dichiarare variabili scalari e vettoriali (cioè a più
componenti).
Per quanto riguarda var4, quello che succede in memoria segue nella tabella
mostrata qui sotto:
Indirizzo Valore Descrizione
0x0000000A 0x08 Byte meno significativo di var4
0x0000000B 0x00 Secondo Byte di var4
0x0000000C 0x00 Terzo Byte più significativo di var4
È identica a:
.FILL numero, 1, espressione
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1
Le variabili di tipo byte possono essere inizializzate anche con la codifica ASCII di un
carattere, estesa su 8 bit con uno zero in testa. Si noti che la codifica ASCII è su 7 bit,
non su 8. La seguente dichiarazione è pertanto lecita:
ed identica a:
var5: .BYTE 0x43, 0x69, 0x61, 0x6F # vett., 4 comp. da 1 byte
Per dichiarare vettori di byte inizializzati con codifiche ASCII fa comodo poter scrivere
diversamente:
var6: .ASCII “messaggio” # vett., 9 comp. da 1 byte
var7: .ASCIZ “messaggio” # vett., 10 comp. da 1 byte
Per indicare i caratteri speciali (ritorno carrello, tabulazione, etc.) si usano le stesse
sequenze di escape che si usano in C++.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30
Titolo: Direttive per la dichiarazione di variabili
Attività n°: 1
Attenzione:
Seconda Attenzione
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Altre direttive e costanti
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S1
Titolo: Altre direttive e costanti
Attività n°: 1
.INCLUDE “path”
.SET dimensione, 4
.SET n_iter, (100*dimensione)
…
MOV $n_iter, %CX # il primo operando è immediato, ci vuole ‘$’
Esempio: visto che le locazioni di memoria che uso sono contigue, potrebbe essere
comodo conoscere ed usare la dimensione della memoria occupata dai dati
all’interno di un programma. In genere lo si fa dichiarando una variabile finta in
fondo da 1 byte. Gli indirizzi della prima ed ultima variabile vengono usati per
calcolare l’occupazione di memoria tramite una direttiva .SET.
Attenzione
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Uso dell’ambiente di sviluppo
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1
• un file eseguibile (con lo stesso nome del file sorgente, ma estensione .exe)
Inoltre, se ci sono stati degli errori, alcune informazioni su dove possono essere.
Ad esempio, in fondo al listato, c’è la lista dei simboli non definiti.
Ad ogni buon conto, l’assemblatore stampa dei messaggi a video che danno conto
degli errori. Visto che questi sono associati alle linee dove si verificano, è comodo
disporre di un editor di testi con i numeri di riga per editare i file (esempio
notepad++).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S2
Titolo: Uso dell’ambiente di sviluppo
Attività n°: 1
Attenzione
Visto che tale strumento è molto ostico, in questo corso non sarà discusso.
Per completezza, si fornisce allo studente una piccola dispensa che descrive
l’uso di tale strumento (file debugger.pdf).
Un’utile alternativa per programmi semplici come quelli che saranno visti durante
il corso è quella di strumentare il codice, inserendo quindi opportune istruzioni
il cui solo scopo è favorire il debugging.
Comandi del debugger GDB
Prof. Giovanni Stea (Università di Pisa)
Comando list source
Sintassi: l[ist] enne
Azione: Mostra uno spezzone del file sorgente di alcune righe intorno alla riga enne. Se enne è
omesso, mostra la parte di file sorgente intorno alla linea che sta per eseguire.
Sintassi: l[ist] prima, ultima
Azione: Mostra le righe del file sorgente tra prima e ultima.
Sintassi: l[ist] nome
Azione: Mostra le righe del file sorgente intorno all’etichetta nome.
Comando run
Sintassi: r[un]
Azione: Mette in esecuzione il programma dall’inizio. Per come è impostato l’ambiente, il comando
è dato automaticamente quando il file eseguibile viene trascinato sull’icona.
Comando step
Sintassi: s[tep] enne
Azione: Mette in esecuzione le enne istruzioni successive a quella eseguita per ultima. Se si
incontra una chiamata di sottoprogramma quando mancano emme istruzioni ad enne, si entra nel
sottoprogramma e si svolgono emme istruzioni del medesimo. Omettere enne equivale a
specificarlo pari a 1.
Comando next
Sintassi: n[ext] enne
Azione: Identico al precedente, ma considera un intero sottoprogramma come una sola istruzione
(detto altrimenti, non entra nei sottoprogrammi).
Comando continue
Sintassi: c[ontinue]
Azione: Mette in esecuzione il programma a partire dall’istruzione successiva a quella eseguita per
ultima, fino al successivo breakpoint.
Comando quit
Sintassi: q[uit]
Azione: Provoca la terminazione del debugger ed il ritorno al sistema operativo Windows.
Comando print
Sintassi: p [/formato] espressione
Azione: Mostra il contenuto dell’espressione indicata. Tale espressione può contenere qualunque
cosa sia valutabile, compreso il contenuto di registri. Il nome di un registro deve essere minuscolo,
e preceduto dal carattere $.
Il formato è uno dei seguenti:
- d: decimal
- u: unsigned decimal
- x: hex
Ancorché si possa utilizzare un nome di variabile nelle espressioni, si consiglia di non farlo. Il
comando print infatti non prevede la possibilità di specificare il numero di byte di memoria che
verranno considerati a partire dall’indirizzo specificato. Se si vuole vedere cosa è contenuto in
memoria, conviene utilizzare il seguente comando.
Comando examine memory
Sintassi: x/NFL indirizzo
Azione: visualizza il contenuto della memoria a partire da indirizzo. Gli altri tre parametri (che
devono essere scritti attaccati a x/) sono:
- N: un numero, pari al numero di oggetti di tipo L da visualizzare
- F: il formato, con le specifiche di cui sopra
Per debuggare un programma bisogna portare l’eseguibile sopra l’icona del debugger. Si apre la
shell del GDB, alla quale vanno dati i comandi.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S3
Titolo: Esercizio in Assembly
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Programmare in Assembly II:
Esercizio in Assembly
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 30/S3
Titolo: Esercizio in Assembly
Attività n°: 1
.GLOBAL _main
.DATA
stringa: .ASCIZ "Questa e' la stringa di caratteri ASCII che usiamo
come esempio"
.TEXT
_main: NOP
MOV $0x00, %CL
LEA stringa, %ESI
MOV lettera, %AL Fondamentale: che succede se ci si dimentica la B nella
comp: CMPB $0x00, (%ESI) CMPB?
JE fine Succede che l’assemblatore non segnala niente, e ci
CMP (%ESI),%AL mette una L (vedere il disassemblato per rendersene
JNE poi conto). In questo modo il programma non funziona
INC %CL (infatti, prende sempre una lettera in più, perché va
poi: INC %ESI oltre nella locazione successiva lettera.
JMP comp
fine: MOV %CL, conteggio
RET
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Controllo del flusso di programma in Assembly:
Traduzione del costrutto if..the..else e dei cicli
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1
Costrutto if..then..else(iii)
Ciclo do…while
ciclo: ist1;
…
istN;
CMP var, %AX
JB ciclo
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1
Alcuni spunti:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Controllo del flusso di programma in Assembly:
Uso del costrutto Loop
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1
Una variazione sul tema per il controllo del flusso è data dalle possibilità
dell’istruzione LOOP.
• decrementa CX
• altrimenti continua
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S1
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Controllo del flusso di programma in Assembly:
Esercizi
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INFORM. E DELL'AUTOM. curr. sistemi di elaborazione e controllo
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 31/S2
Titolo: CONTROLLO DEL FLUSSO DI PROGRAMMA IN ASSEMBLY:
Attività n°: 1
GLOBAL _main
.DATA
numero: .BYTE 9
risultato: .LONG 1
.TEXT
_main: NOP
MOV $0, %ECX
MOV $1, %EAX
MOV numero, %CL #attezione è la parte bassa di ECX
CMP $9, %CL
JA fine
CMP $1, %CL
JBE fine
ciclo_f: MUL %ECX #usa %EAX come moltiplicando e destinatario
DEC %CL # anche LOOP ciclo_f
JNZ ciclo_f
fine: MOV %EAX, risultato
RET
Corso di Laurea: #corso#
INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
#insegnamento#
Lezione n°: 32
#lezione#
Titolo: Sottoprogrammi e passaggi di parametri
#titolo#
Attività n°: 1
#attività#
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
passaggio di parametri e valori restituiti
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1
Esempio:
MOV …, %AX # preparazione dei parametri
MOV …, %EBX # per la chiamata di sottoprogramma
CALL sottoprg
MOV %CX, var # utilizzo del valore di ritorno
sottoprg: …
…
MOV $..., %CX # preparazione del valore di ritorno
RET
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1
L’unico registro che fa eccezione è quello dei flag, che si assume che possa
cambiare.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1
Attenzione: per ogni PUSH ci deve essere una POP (e viceversa), altrimenti il
programma va in crash. Infatti, alla RET l’indirizzo di ritorno viene ripescato dalla
pila, e se si è messo qualcosa in pila senza toglierlo (o viceversa) l’indirizzo sarà
casuale. Quindi la pila va lasciata come è stata trovata.
Per questo motivo, prima della RET finale nel sottoprogramma principale, si
è soliti mettere la seguente linea di codice:
Che di fatto mette %EAX a zero (ed occupa un solo byte, invece che 5).
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
Dichiarazione e inizializzazione dello stack
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2
.DATA
…
mystack: .FILL 1024,4 #dichiarazione stack
.SET initial_esp, (mystack + 1024*4)
.TEXT
_main: NOP
MOV $initial_esp, %ESP #inizializzazione stack
Si noti che:
mystack è un (nome simbolico di) indirizzo a 32 bit, quindi può essere
usato in un’espressione
initial_esp è l’indirizzo della locazione successiva all’ultimo byte di
mystack.
Corso di Laurea: ING.. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2
Nel caso precedente, sono state allocate 1024 doppie parole, che
dovrebbero essere più che sufficienti per semplici programmi
scopi.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Gestione software dell’I/O:
Ingresso e uscita di caratteri e stringhe
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 1
.INCLUDE “C:/GAS/utility”
Visto che il file utility dichiara anche l’etichetta _main come globale,
non c’è più bisogno dell’apposita direttiva se lo si include.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Gestione software dell’I/O:
Ingresso e uscita di numeri
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2
.DATA
messaggio: .ASCII “scrivi un numero hex: \n\r”
#La direttiva .ASCII definisce una variabile vettoriale #di dimensione pari al
numero di caratteri inseriti, i #cui valori iniziali sono, rispettivamente, la codifiche
#ASCII (a 8 bit) dei caratteri stess.
.TEXT
[…]
LEA messaggio, %EBX #copia in EBX l’indirizzo iniziale
#di messaggio, parametro di outline
CALL outline #stampa a video messaggio
CALL inHA1_eco # aspetta un numero esadecimale da tastiera
CALL HA1B4 #converte la codifica ASCII nel numero
# a questo punto in AL c’è il numero che digitato.
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S1
Titolo: Sottoprogrammi e passaggi di parametri
Attività n°: 2
inDANB16_eco. Attende che dalla tastiera arrivino più codifiche ASCII di cifre
decimali. Quando ciò avviene interpreta le cifre come l’espressione in base
dieci di un numero naturale, esprime tale numero in base due su 16 bit e lo
deposita in AX. Oltre a ciò, fa l’eco sul monitor delle codifiche ASCII delle cifre
decimali prelevate.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
Esercizio1
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF. E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S2
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Sottoprogrammi e passaggi di parametri:
Esercizio1
Prof. Giovanni Stea (Università di Pisa)
Prof. Pietro Ducange
Corso di Laurea: ING. INF.E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E CONTROLLO
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 32/S3
Titolo: Sottoprogrammi e Gestione I/O
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.
Calcolatori Elettronici e
Sistemi Operativi
Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.
Calcolatori Elettronici e
Sistemi Operativi
Supporto per le esercitazioni
Webinar
Prof. Pietro Ducange
Corso di Laurea: ING. INFORMATICA E DELL'AUTOMAZIONE CURR. SISTEMI DI ELABORAZIONE E
Insegnamento: CONTROLLO
Lezione n°: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Titolo: 33/S2
Attività n°: WEBINAR: supporto alle esercitazioni
1
Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.
Calcolatori Elettronici e
Sistemi Operativi
Webinar
• Si invitano gli studenti a seguire il Webinar come in oggetto alla
presente lezione.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Aspetti fisici di un semplice processore
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
Allo studente saranno date indicazioni sulle parti del libro da approfondire
nelle sessioni di studio di approfondimento.
Inoltre, come detto già nel modulo di Reti Logiche, esiste anche un livello
di uscita in alta impedenza indicato con Z. Anche questo livello di uscita
può essere supportato dai piedini dei blocchi funzionali che saranno
presentati.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
In figura viene mostrato come si possono ottenere i tre possibili valori in uscita da
un blocco logico.
• Se /OE vale zero, allora l’uscita coincide con l’ingresso se questo vale 0 o 1.
Altrimenti, se l’ingresso è collegato ad altra impedenza, l’uscita risulta non
specificata (può valere sia zero sia uno).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
• Spazio in cui vuole accedere (memoria o I/O), per esempio per prelevare
istruzioni o operandi o memorizzare risultati
Attenzione:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Cicli di lettura e scrittura del processore
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
Ciclo di lettura
Con riferimento alla piedinatura del processore vista nelle lezione
principale, in figura si mostra il diagramma temporale di un ciclo di
lettura del processore (esempio di lettura in memoria).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
Ciclo di lettura
Esso può avvenire
Ciclo di scrittura
In figura si mostra il diagramma temporale di un ciclo di scrittura del
processore (esempio di lettura in memoria).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S1
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
Ciclo di scrittura
Esso può avvenire
Attenzione:
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Approfondimento sul libro di testo
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S2
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Introduzione all’hardware del calcolatore:
Esempi di domande di esame
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 34/S3
Titolo: Introduzione all Hardware del calcolatore
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Funzionamento interno di un calcolatore:
Processore e BUS di comunicazione
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35
Titolo: Funzionamento interno del calcolatore
Attività n°: 1
Oltre al processore (i cui piedini sono quelli già discussi nella lezione
precedente), sono presenti lo spazio di memoria e lo spazio di I/O.
Per far ciò, utilizza i registri visibili al programmatore (quelli visti quando è
stato introdotta la programmazione in Assembly) e anche dei registri di
appoggio che il programmatore non vede, tra cui il registro IR (Istruction
Register).
• Chiamata
• Indirizzamento
• Esecuzione
Si ricorda che in EIP è contenuto l’indirizzo della prima locazione di memoria che
contiene l’istruzione. Dopo ogni ciclo di lettura per caricare l’istruzione in IR si
incrementa il valore contenuto in EIP in modo tale che alla fine esso contenga
l’indirizzo della prossima istruzione da eseguire.
Bus di comunicazione
Bus di comunicazione
Infatti, il bus è una risorsa che deve essere usata in maniera mutuamente
esclusiva: un solo blocco alla volta può inviare informazioni sul bus. Un
altro blocco sarà abilitato a riceverle.
Bus di comunicazione
Per gestire la mutua esclusione, come mostrato in figura, i piedini collegati al
bus dati di ciascun blocco sono supportati da un registro la cui uscita è
comandata da una porta 3-state.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Funzionamento interno di un calcolatore:
Organizzazione dello spazio di memoria e di I/O
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S1
Titolo: Funzionamento interno del calcolatore
Attività n°: 1
• In particolare, i piedini per gli indirizzi e per i dati vengono indicati gli
stessi nomi usati per il processore.
32
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Funzionamento interno di un calcolatore:
Approfondimento sul libro di testo
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 35/S2
Titolo: Funzionamento interno del calcolatore
Attività n°: 1
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Architettura di un calcolatore a 32 bit :
Aspetti fisici del processore
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
Saranno trattati sistemi monoprocessore, che in prima istanza saranno dotati solo
di:
• Processore
• Memoria principale
• Interfacce semplificate
• Memorie cache.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
La Bus Unit si occupa di gestire gli accessi agli spazi esterni. Essa è quindi
responsabile dei cicli di bus che servono per prelevare le istruzioni, leggere dati e
scrivere risultati.
La Prefetch Unit si occupa di gestire la coda interna delle istruzioni. La PU, ogni
qualvolta che non è richiesto il bus per altri scopo, richiede alla BU di effettuare
accessi in memoria per prelevare istruzioni e depositarle in un buffer interno al
processore (coda di prefetch). Queste istruzioni vengono inviate opportunamente
alla ALU o alla FPU, man mano che queste devono essere eseguite. La PU si
occupa di svuotare la coda di istruzioni quando, per effetto di un salto o di altri
meccanismi, viene cambiato il contenuto di EIP.
Attenzione:
Per questo motivo, i piedini per i dati in questo caso sono 32 (D31-D0).
Si tratta di un insieme contiguo di linee da 4 byte consecutivi, il primo dei quali ha indirizzo multiplo di 4. Tale
indirizzo prende il nome di indirizzo di linea.
In un ciclo di bus, possono essere trasferite o una singola linea o una porzione di essa (i byte pero devo
essere consecutivi).
Come mostrato in figura, ciascun byte della linea viene gestito da un insieme di 8 piedini specifici di D31-D0.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
Notare che:
Inoltre, può succedere che i byte che si trovano o che devono essere
memorizzati nei registri debbano subire delle traslazioni rispetto alla
posizione che devono assumere o assumono in memoria (e quindi nelle
porzioni specifiche di bus dati).
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
In riferimento a quanto detto nella slide precedente, occorre tener presente che gli
operandi lunghi una parola (2 byte) o una parola doppia rappresentano un caso
particolare da analizzare.
Similmente, una parola doppia si dice allineata se l’indirizzo del primo byte è multiplo
di 4.
Parole e parole doppie allineate possono essere trasferite con un unico ciclo di bus.
Visto che il programmatore può specificare nelle istruzioni gli indirizzi degli operandi,
se rispetta gli allineamenti l’esecuzione del suo programma sarà più veloce.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
Un ciclo di bus dura in certo numero di cicli di clock (si supponga 4). Viene attivato da dall’impulso
di /RE nel primo ciclo. Alla fine del terzo ciclo di clock, si controlla /READY (collegato ad esempio
ad una interfaccia o alla memoria). Se non è attivo (quindi vale 1) il ciclo di bus si prolunga fino a
quando da /READY non arriva l’impulso di attivazione. A questo la lettura o la scrittura
dall’interfaccia (o dalla memoria) si è conclusa.
Nell’esempio, gli Stati di Wait, i cicli di clock in più necessari per il ciclo di bus, sono sono stati 2.
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S1
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1
Si consiglia agli studenti di leggere con attenzione il paragrafo 2.2 del libro di testo
Da tali paragrafi sono state estratte la maggior parte delle informazioni presentate
nelle precedenti slide.
Calcolatori Elettronici e
Sistemi Operativi
Modulo di Calcolatori Elettronici
Nucleo Tematico: Strutture HW del Calcolatore
Architettura di un calcolatore a 32 bit:
Esempi di domande di esame I
Prof. Pietro Ducange
Corso di Laurea: INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04)
Insegnamento: CALCOLATORI ELETTRONICI E SISTEMI OPERATIVI
Lezione n°: 36/S2
Titolo: Architettura di un calcolatore a 32 bit
Attività n°: 1