C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di...

Post on 02-May-2015

214 views 2 download

Transcript of C. Gaibisso Programmazione di Calcolatori Lezione VIII Il modello di memoria Programmazione di...

C. Gaibisso Programmazione di Programmazione di CalcolatoriCalcolatori

Lezione VIIIIl modello di memoria

Programmazione di Calcolatori: Il modello di memoria 1

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

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 locazioni x un valore

intero

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

• Molto meno informalmente:è determinato dall’insieme delle

quadruple

(nomevar, tipovar, valorevar,

indirizzovar)

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

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

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

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

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.

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:

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:

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.

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

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

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:

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