Upload
domenica-mancuso
View
215
Download
2
Embed Size (px)
Citation preview
G. Amodeo,C. Gaibisso Programmazione di Programmazione di
CalcolatoriCalcolatori
Lezione VIIIIl modello di memoria
Programmazione di Calcolatori: Il modello di memoria 1
G. Amodeo,C. Gaibisso
Il modello di memoriaIl modello di memoria
Programmazione di Calcolatori: Il modello di memoria 2
● ogni locazione memorizza una sequenza di 8 bit
● ogni locazione è univocamente identificata da un valore numerico detto indirizzo
● ad ogni locazione è associato un flag che indica se la locazione è correntemente in uso o è invece disponibile
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
10100000 X
● un insieme di locazioni
In uso
Disponibile
x
G. Amodeo,C. Gaibisso
VariabiliVariabili
Programmazione di Calcolatori: Il modello di memoria 3
● una variabile è un insieme di locazioni contigue in memoria
● il numero delle locazioni allocate per una variabile è funzione del tipo della variabile
● ogni variabile è identificata da una stringa alfa-numerica detta nome della variabile
● ogni variabile memorizza un valore
● il tipo della variabile è il tipo del valore memorizzato
A● l’indirizzo di una variabile è
l’indirizzo della prima di tali locazioni
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
x
x
xxxx
3
intero
4
G. Amodeo,C. Gaibisso
Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 4
• Molto informalmente:è una foto del contenuto della memoria ad un certo istante
è definito dall’insieme delle locazioni di memoria in uso, dall’insieme delle variabili, dal valore e dalle locazioni ad esse assegnate
• Molto meno informalmente:
2834
2835
2836
2837
2838
2839
2840
2834
2835
2836
2837
2838
2839
2840
x
x
x
x
xx
xx
Stato1 Stato2
Stato1 = Stato2?
NO
G. Amodeo,C. Gaibisso
Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 5
xx
xx
xx
xx
3A
B
3A
2B2
Stato1 Stato2
Stato1 = Stato2?
xx
xx
xx
xx
2A
B
2A
2C2
Stato1 Stato2
Stato1 = Stato2?
SI
NO
G. Amodeo,C. Gaibisso
Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 6
xx
xx
xx
xx
2A
B
2A
3B2
Stato1 Stato2
Stato1 = Stato2?
NO
xx
xx
xx
xx
2A
B
2A
2.0B2
Stato1 Stato2
Stato1 = Stato2?
NO
G. Amodeo,C. Gaibisso
Stato della memoriaStato della memoria
Programmazione di Calcolatori: Il modello di memoria 7
xx
xx
xx
xx
2A
B
2A
2B2
Stato1 Stato2
Stato1 = Stato2?
x
x
NO
G. Amodeo,C. Gaibisso
Definizione di una variabileDefinizione di una variabile
Programmazione di Calcolatori: Il modello di memoria 8
• Definizione di una variabile:
• Modifiche allo stato della memoria:
tipo_variabile nome_variabile
1. si riserva il numero di locazioni contigue in memoria necessario a memorizzare un valore di tipo tipo_variabile;
2. si associa il nome nome_variabile alle locazioni riservate;
3. si associa alla variabile il tipo tipo_variabile.
G. Amodeo,C. Gaibisso
Definizione di una variabileDefinizione di una variabile
Programmazione di Calcolatori: Il modello di memoria 9
int y;
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
x
x
xxxx
y
intero
• Esempio:
G. Amodeo,C. Gaibisso
Rilascio di memoria allocataRilascio di memoria allocata
Programmazione di Calcolatori: Il modello di memoria 10
avviene rendendo di nuovo disponibili le celle allocate per la variabile
{
{
int A;
….
}
}
• Esempio: 2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
xxxx
A
• Rilascio della memoria:
G. Amodeo,C. Gaibisso Assegnamento di valori a Assegnamento di valori a
variabilivariabili
Programmazione di Calcolatori: Il modello di memoria 11
• Assegnamento:
nome_variabile = espressione
Attenzione:il tipo di nome_variabile e il tipo di espressione “devono” essere gli
stessi
• Modifiche allo stato della memoria:
1. si valuta il valore di espressione;
2. si sostituisce tale valore al valore memorizzato da nome_variabile.
G. Amodeo,C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite
nomenome
Programmazione di Calcolatori: Il modello di memoria 12
• Esempio:
B = A+C;-4 3
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
Cxxxx
x
A
3xxxx
xxB8
-4
-1
G. Amodeo,C. Gaibisso Accesso all’indirizzo di una Accesso all’indirizzo di una
variabilevariabile
Programmazione di Calcolatori: Il modello di memoria 13
• L’operatore &:
&nome_variabile
• Valore restituito:
l’indirizzo di nome_variabile;
B = &A;2839
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
A3xxxx
Bxx2839
puntatore
G. Amodeo,C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite
indirizzoindirizzo
Programmazione di Calcolatori: Il modello di memoria 14
• L’operatore *:
A=*B+1;
3
*nome_puntatore
• Effetto:
equivale al nome della variabile il cui indirizzo è in nome_puntatore;
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
A3xxxx
Bxx2839
4
A
• Esempio:
G. Amodeo,C. Gaibisso Accesso alle variabili tramite Accesso alle variabili tramite
indirizzoindirizzo
Programmazione di Calcolatori: Il modello di memoria 15
• Esempio:2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2855
x
Cxxxx
Bx2837
A
3
xxxx
4
*B = A+C;C 4 3 7