La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 20 Maggio.

Presentazioni simili


Presentazione sul tema: "DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 20 Maggio."— Transcript della presentazione:

1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Maggio 2015

2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Un po’ di logistica… 2

3 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 2ndo Compitino 21 Maggio @ NECST Lab (12.30pm) 22 Maggio @ CG1 (2pm) 22 Maggio @ CG1 (3.30pm) 3

4 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info (con i compitini) ed EIM Avete superato INFO con i compitini?  Ricordo che si supera con un tot di 55% 4

5 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info (con i compitini) ed EIM Avete superato INFO con i compitini?  Ricordo che si supera con un tot di 55% FINITO!!! 5

6 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cristiana Bolchini 6

7 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Info (con i compitini) ed EIM Avete superato INFO con i compitini?  Ricordo che si supera con un tot di 55% Dovete superare EIM nella sessione estiva  Ricordo che una sessione = due prove (nello stesso periodo)  Ricordo che vi sono 3 sessioni Luglio (estiva), Settembre (autunnale(?)), Febbraio (invernale) 7

8 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab di EIM Giovedi’: Abba' a Conti Lunedi’: Core a Luraghi 8

9 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giusto per fare il punto su ven… 9 1945 ENIAC (170m 2 30t 20 numeri)1960 Burroughs 205 Apple ~1980 (16kb)IBM 1981 (64kb) 2015

10 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giusto per fare il punto su ven… 10 1945 ENIAC (170m 2 30t 20 numeri)1960 Burroughs 205 Apple ~1980 (16kb)IBM 1981 (64kb) 2015

11 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giusto per fare il punto su ven… 11 1945 ENIAC (170m 2 30t 20 numeri)1960 Burroughs 205 Apple ~1980 (16kb)IBM 1981 (64kb) 2015

12 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giusto per fare il punto su ven… 12 1945 ENIAC (170m 2 30t 20 numeri)1960 Burroughs 205 Apple ~1980 (16kb)IBM 1981 (64kb) 2015

13 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giusto per fare il punto su ven… 13 1945 ENIAC (170m 2 30t 20 numeri)1960 Burroughs 205 Apple ~1980 (16kb)IBM 1981 (64kb) 2015

14 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Codifica delle istruzioni e dei dati per l’esecuzione automatica Architettura dei calcolatori  Struttura e principi di funzionamento della CPU della memoria centrale 14

15 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE L’ “esecutore” Un calcolatore basato sull’architettura di Von Neumann esegue un programma sulla base dei seguenti principi: Un calcolatore basato sull’architettura di Von Neumann esegue un programma sulla base dei seguenti principi:  dati e istruzioni sono memorizzati in una memoria unica che permette sia la scrittura che la lettura;  i contenuti della memoria sono indirizzati in base alla loro posizione, indipendentemente dal tipo di dato o istruzione contenuto;  le istruzioni vengono eseguite in modo sequenziale. Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina. Le istruzioni scritte in linguaggio macchina sono piuttosto rudimentali: Il linguaggio per cui la CPU si comporta da esecutore è detto linguaggio macchina. Le istruzioni scritte in linguaggio macchina sono piuttosto rudimentali:  il concetto di tipo di dato è quasi assente,  il numero di operandi è limitato (in genere non più di due),  il numero di operazioni previste è ridotto. Struttura istruzionecodice operativodestsrc1src2 Linguaggio assemblatoreaddR01R02R03 Linguaggio macchina000000 00000 100000000010001000011 15

16 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ciclo Fetch–Decode–Execute Fetch Decode Execute 16

17 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Le parti di una CPU Data path (o percorso dei dati)  è la parte che si occupa dell’effettiva elaborazione dei dati;  comprende dispositivi diversi una o più unità aritmetico-logiche, dette ALU (Arithmetic Logic Unit); alcune unità di memorizzazione temporanea, i registri, memoria ad alta velocità usata per risultati temporanei e informazioni di controllo (il valore massimo memorizzabile in un registro è determinato dalle dimensioni del registro). Unità di controllo  coordina le operazioni di tutto il processore (anche quelle del data path!);  regola il flusso dei dati e indica quali registri debbano essere collegati agli ingressi e all’uscita dell’ALU;  invia all’ALU il codice dell’operazione da eseguire;  riceve indicazioni sull’esito dell’operazione appena eseguita dall’ALU e gestisce opportunamente queste informazioni;  comprende alcuni registri di uso specifico Program Counter (PC) – qual è l’istruzione successiva; Instruction Register (IR) – istruzione in corso d’esecuzione; Program Status Word (PSW) … 17

18 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Data path Registri ingresso ALU R00R01R02R03………… Registri ALUALU Registro uscita ALU X Y X+YX+YX+YX+Y Istruzione (e.g. add) esito X Y X+YX+YX+YX+Y X Y 18

19 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Unità di controllo Memoria Bus dati Bus indirizzi Bus controllo PC PSW Data path Unità di controllo CPU IR Registri ALU Collegamenti per il trasferimento dati Collegamenti di controllo Collegamenti per il trasferimento istruzioni 19

20 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una sequenza di istruzioni … Ipotizziamo che Ipotizziamo che  si debba eseguire l’istruzione A A + B + C (assegna alla variabile A la somma del contenuto delle variabili A, B e C);  le corrispondenti istruzioni in linguaggio macchina si trovino all’indirizzo 789, 790, 791, … (come riportato nella tabella sottostante);  le variabili A, B e C si trovino rispettivamente nelle celle di memoria 4000 (A), 4004 (B) e 4008 (C). NumIstruzioneCommento …… … … 789load R02,4000 trasferisce il contenuto della cella 4000 (A) nel registro R02 790load R03,4004 trasferisce il contenuto della cella 4004 (B) nel registro R03 791add R01,R02,R03 somma il contenuto dei registri R02 e R03 e scrive il risultato in R01 792load R02,4008 trasferisce il contenuto della cella 4008 (C) nel registro R02 793add R01,R01,R02 somma il contenuto dei registri R01 e R02 e scrive il risultato in R01 794store R01,4000 trasferisce il contenuto del registro R01 nella cella 4000 (A) …… … … 20

21 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Situazione iniziale 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati Collegamenti di controllo Collegamenti per il trasferimento dati Collegamenti per il trasferimento istruzioni 21

22 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0789 Lettura istruzione 0789 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4000 +10790 lettura 22

23 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0790 Esecuzione istruzione 0789 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4000 4000 1492 lettura 23

24 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0790 Lettura istruzione 0790 0790 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R03,4004 +10791 load R02,4000 1492 lettura 24

25 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0791 Esecuzione istruzione 0790 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R03,4004 4004 1918 lettura 1492 25

26 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0791 Lettura istruzione 0791 0791 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R02,R03 +10792 load R03,4004 1492 lettura 1918 26

27 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0792 Esecuzione istruzione 0791 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R02,R03 1492 1918 1492 1918 add esito 3410 27

28 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0792 Lettura istruzione 0792 0792 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4008 +10793 add R01,R02,R03 1492 lettura 1918 3410 28

29 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0793 Esecuzione istruzione 0792 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati load R02,4008 4008 2006 lettura 1492 1918 3410 29

30 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0793 Lettura istruzione 0793 0793 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R01,R02 +1 0794 load R02,4008 2006 lettura 1918 3410 30

31 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0794 Esecuzione istruzione 0793 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati add R01,R01,R02 2006 1918 2006 3410 add esito 5416 3410 31

32 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 0794 Lettura istruzione 0794 0794 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … … … … … 40001492 40041918 40082006 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati store R01,4000 +1 0795 add R01,R01,R02 2006 lettura 1918 5416 32

33 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE … … … … 40001492 40041918 40082006 … … … … 5416 0795 Esecuzione istruzione 0794 Bus dati Bus indirizzi Bus controllo … … … … 0789load R02,4000 0790load R03,4004 0791add R01,R02,R03 0792load R02,4008 0793add R01,R01,R02 0794store R01,4000 … … … … PSW Data path Unità di controllo CPURegistri ALU IR PC R00 R01 R02 R03 R04 R05 … MemoriaIstruzioni Dati store R01,4000 4000 scrittura 2006 1918 5416 33

34 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma dati e istruzioni, dove sono salvati? 34 in memoria

35 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Criteri di caratterizzazione di una memoria Velocità  tempo di accesso (access time) (quanto passa tra una richiesta e la relativa risposta)  velocità di trasferimento (transfer rate) (quanti byte al secondo si possono trasferire) Volatilità  cosa succede quando la memoria non è alimentata?  per quanto tempo i dati vi rimangono immagazzinati? Capacità  quanti byte può contenere? qual è la dimensione massima? Costo (per bit) Modalità di accesso  diretta (o casuale): il tempo di accesso è indipendente dalla posizione  sequenziale: il tempo di accesso dipende dalla posizione  mista: combinazione dei due casi precedenti  associativa: indicato il dato, la memoria risponde indicando l’eventuale posizione che il dato occupa in memoria. 35

36 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Gerarchia di memoria! 36 Obiettivo: realizzare una memoria grossa e veloce  dimensioni pari a circa quelle della memoria grossa; Memorie di gran capacità, relativamente lente, economiche ed accessibili tramite il bus  prestazioni pari a circa quelle della memoria veloce. Memorie veloci, integrate nello stesso chip della CPU, ma costose Man mano che ci si sposta verso il basso nella gerarchia aumenta il valore dei parametri fondamentali:  aumenta il tempo di accesso;  aumenta la capacità di memorizzazione;  ma diminuisce il costo per bit.

37 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Una gerarchia di memoria 37

38 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Indirizzi di memoria I bit nelle memorie sono raggruppati in celle: I bit nelle memorie sono raggruppati in celle:  tutte le celle sono formate dallo stesso numero di bit;  una cella composta da k bit, è in grado di contenere una qualunque tra le 2 k combinazioni diverse di bit. Ogni cella ha un indirizzo: Ogni cella ha un indirizzo:  serve come accesso all’informazione;  in una memoria con N celle gli indirizzi vanno da 0 a N–1. La cella è l’unità indirizzabile più piccola. In quasi tutti i calcolatori è di 8 bit (un byte). La cella è l’unità indirizzabile più piccola. In quasi tutti i calcolatori è di 8 bit (un byte). I byte vengono raggruppati in parole (che oggi sono di 32/64 bit), su cui la CPU esegue le operazioni. I byte vengono raggruppati in parole (che oggi sono di 32/64 bit), su cui la CPU esegue le operazioni. 38

39 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Organizzazione della memoria 39

40 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Organizzazione della memoria Anche gli indirizzi della memoria sono rappresentati come numeri binari: Anche gli indirizzi della memoria sono rappresentati come numeri binari:  un indirizzo di M bit consente di indirizzare 2 M celle;  per 6 o 8 celle bastano 3 bit, per 12 celle ne servono 4;  il numero di bit nell’indirizzo determina il numero massimo di celle indirizzabili nella memoria ed è indipendente dal numero di bit per cella (una memoria con 2 12 celle richiede sempre 12 bit di indirizzo, quale che sia la dimensione di una cella). Una memoria può essere organizzata in diversi modi: Una memoria può essere organizzata in diversi modi:  per esempio, con 96 bit possiamo avere 6 celle di 16 bit (6*16=96), 8 celle di 12 bit (8*12=96) 12 celle di 8 bit (12*8=96).  In genere si considerano celle di 8 bit (1 byte). 40

41 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Memoria e collegamenti al bus Viene selezionata la parola di indirizzo 0110 2 il contenuto è 01101100; l’operazione è di lettura (load) o di scrittura (store) a seconda dei comandi presenti sul bus di controllo 41

42 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 42 Array  vettori di elementi indicizzati, omogenei, memorizzati in celle di memoria consecutive Dichiarazione di un array: int vett[3]; È un array di 3 elementi di tipo int Gli elementi di un array sono normali variabili: vett[0]  3; printf("%d", vett[0]); > 3 scanf("%d", &vett[1]); > 17vett[1] assume valore 17 Gli array

43 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 43 int a, vett[3]; Gli array vett[0] vett[1] vett[2] a a

44 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 44 int v[100];  alloca memoria per 100 elementi interi, a partire da un certo indirizzo di memoria la dimensione deve essere nota al compilatore deve essere una espressione costante Per accedere all' i-esimo elemento di v  calcola l'indice i i può essere un'espressione  all’indirizzo della prima cella di v somma il numero di celle pari allo spazio occupato da i elementi Come opera il calcolatore?

45 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori – premessa Dichiarare una variabile significa riservare una zona di memoria composta da diverse celle Il numero di celle dipende dal tipo di dato (short int 2 byte, float 4 byte, …) Ogni cella di memoria ha un indirizzo fisico e:  il nome della variabile indica il contenuto della cella di memoria  l’operatore & permette di ottenere l’indirizzo di memoria della cella associata alla variabile cui l’operatore è applicato 45

46 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Variabili e indirizzi Supponiamo che la dichiarazione riservi la zona di memoria all’indirizzo 1 var indica il contenuto della cella di memoria &var indica l’indirizzo della cella di memoria int var; 0 1 2 3 var &var 46

47 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int 47

48 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 48 int dati[DIM]; In memoria dati[0] dati[1] dati[2]

49 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Giochiamo con gli array e i puntatori 49

50 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 50 int dati[DIM]; dati[0] dati[1] dati[2] int *valori; valori In memoria, macchina a 32bit, e.g. x86

51 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 51 int dati[DIM]; 53 7 7 20 int *valori; valori dati[0]=53 dati[1]=7 dati[2]=20 In memoria, macchina a 32bit, e.g. x86

52 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 52 int dati[DIM]; 53 7 7 20 int *valori; 01 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; In memoria, macchina a 32bit, e.g. x86

53 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 53 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 53 01 valori=dati; valori++;

54 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 54 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 54 01 valori=dati; valori++; Si prende il dato in valori e si somma 1

55 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 55 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 55 01 valori=dati; valori++; Si prende il dato in valori e si somma 1 Sommare 1 rispetto al tipo di dato a cui punta valori

56 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 56 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 56 01 valori=dati; valori++; Si prende il dato in valori e si somma 1 Sommare 1 rispetto al tipo di dato a cui punta valori valori punta ad un intero (=4byte)

57 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 57 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 57 01 valori=dati; valori++; Si prende il dato in valori e si somma 1 valori contiene 01 Sommare 1 rispetto al tipo di dato a cui punta valori valori punta ad un intero (=4byte)

58 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 58 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 58 01 valori=dati; valori++; Si prende il dato in valori e si somma 1 valori contiene 01 Sommare 1 rispetto al tipo di dato a cui punta valori valori punta ad un intero (=4byte) valori++ è 01 + lo spazio per 1 intero

59 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 59 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 59 01 valori=dati; valori++; Si prende il dato in valori e si somma 1 valori contiene 01 Sommare 1 rispetto al tipo di dato a cui punta valori valori punta ad un intero (=4byte) valori++ è 01 + lo spazio per 1 intero valori++ = 01 + 4 = 05

60 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 60 int dati[DIM]; int *valori; In memoria, macchina a 32bit, e.g. x86 60 valori=dati; valori++; Si prende il dato in valori e si somma 1 valori contiene 01 Sommare 1 rispetto al tipo di dato a cui punta valori valori punta ad un intero (=4byte) valori++ è 01 + lo spazio per 1 intero valori++ = 01 + 4 = 05 05

61 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 61 int dati[DIM]; 53 7 7 20 int *valori; 05 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; In memoria, macchina a 32bit, e.g. x86

62 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 62 int dati[DIM]; 53 7 7 20 int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; In memoria, macchina a 32bit, e.g. x86

63 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 63 int dati[DIM]; 53 7 7 20 int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; *valori=43; In memoria, macchina a 32bit, e.g. x86

64 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 64 int dati[DIM]; 53 7 7 20 int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; *valori=43; In memoria, macchina a 32bit, e.g. x86 *

65 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 65 int dati[DIM]; 53 7 7 int *valori; 09 dati[0]=53 dati[1]=7 dati[2]=20 valori=dati; valori++; *valori=43; 43 In memoria, macchina a 32bit, e.g. x86

66 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 66

67 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 67

68 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 68

69 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 69

70 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni 70

71 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 71 int dati[DIM]; In memoria dati[0] (aka valori[0]) dati[0] (aka valori[0]) dati[1] (aka valori[1]) dati[1] (aka valori[1]) dati[2] (aka valori[2]) dati[2] (aka valori[2])

72 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni – con int *valori 72

73 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Somma degli elementi di un array di int: funzioni – con int *valori 73

74 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE int *valori Vs int valori[] 74 Aritmetica dei puntatori Accesso tramite array

75 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio  Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 2  Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill Capitolo 1, 2, 5  The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley Capitolo 2 Approfondimenti  Struttura e progetto dei calcolatori, D. A. Patterson, J. Hennessy, 3a Ed, Zanichelli Capitolo 1, 2 Credits  Prof. G. Buonanno e D. Sciuto, LIUC 75


Scaricare ppt "DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 20 Maggio."

Presentazioni simili


Annunci Google