Esercizi. Assembly. Alessandro A. Nacci ACSO 2014/2014

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014"

Transcript

1 Esercizi Assembly Alessandro A. Nacci ACSO 2014/2014 1

2 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32 bit PC: Program Counter a 32 bit (24 bit) SP (= A7): Stack Pointer a 16, 32 bit FP (di solito = A6): Frame Pointer (puntatore all area di attivazione) a 16, 32 bit CCR: Condition Code Register (registro dei bit di esito - flag) a 8 bit SR: Status Register registro di stato (contiene CCR) a16 bit 2 banco di registri di solito è il registro puntatore ad area di attivazione seleziona tra USP e SSP T bit di traccia MSB M bit di modo (U / S) D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3 A4 A5 (FP = ) A6 SP = A7 PC I bit di livello priorità (I0, I1, I2) parola doppia parola byte puntatore alla pila utente (USP) puntatore alla pila di sistema (SSP) SR 24 bit L W B registro di stato LSB registri di dato registri di registro puntatore alla pila registro contatore di programma CCR (sottoregistro dei bit di esito) C V riporto Z trabocco zero N X negativo estensione bit di esito (o codici di condizione)

3 RIPASSO SP (A7) FP (A6) SP prec FP prec temporanei registri salvati parametri temporanei registri salvati Sottoprogrammi: area di attivazione! una migliore realizzazione del meccanismo di chiamata a sottoprogramma fa uso delle aree di attivazione (stack frame)! in esistono istruzioni dedicate per allocare e deallocare aree di attivazione: LINK e UNLK! le aree di attivazione formano una lista concatenata (in rosso nella figura)! per convenzione, il puntatore all area di attivazione corrente () è nel registro A6! creazione del frame LINK A6, #-N (N è la dimensione delle del chiamato)! deallocazione del frame UNLK A6! i parametri hanno spiazzamento positivo rispetto a FP esempio: il primo parametro.l sta a 8(A6)! le hanno spiazzamento negativo rispetto a FP esempio: la prima var. locale.l sta a -4(A6) 3

4 RIPASSO Sottoprogrammi LINK! istruzione LINK A6, #-N 1. [SP] [SP] 4 riservo una parola lunga sulla pila 2. [M([SP])] [A6] salvo vecchio 3. [A6] [SP] il ora punta alla cima della pila 4. [SP] [SP] + N riservo spazio per le (attenzione: N è solitamente negativo) FP prima del punto 1 (JSR appena eseguita) SP parametri in ingresso/uscita FP dopo il punto 1 dopo il punto 2 dopo il punto 3 dopo il punto 4 SP (spazio) parametri in ingresso/uscita FP SP parametri in ingresso/uscita FP SP parametri in ingresso/uscita FP SP variabili locali parametri in ingresso/uscita 4

5 RIPASSO Sottoprogrammi UNLNK! istruzione UNLK A6 1. [SP] [A6] la nuova cima della pila è il FP 2. [A6] [M([SP])] ripristino il vecchio 3. [SP] [SP] + 4 abbasso la cima della pila di una parola lunga prima del punto 1 FP SP variabili locali parametri in ingresso/uscita FP dopo il punto 1 dopo il punto 2 dopo il punto 3 (pronto per RTS) SP parametri in ingresso/uscita FP SP parametri in ingresso/uscita FP SP parametri in ingresso/uscita 5

6 RIPASSO Traduzione CONSTATAZIONE! la variabile è sempre collocata in memoria! gran parte delle istruzioni lavora solo nei registri (o ha vincoli di ortogonalità tali da limitarne l uso in memoria) REGOLA BASE PER TRADURRE! se hai uno statement C che usa e magari modifica una variabile (per esempio l assegnamento a = a + b + 1 ), comportati così con la variabile (nell esempio a) caricala nel registro all inizio dello statement (o non appena serve) e memorizzala (se è stata modificata) alla fine dello statement! se la variabile figura nello statement C successivo, non tentare di tenerla nel registro memorizzala e ricaricala! 6

7 RIPASSO Traduzione Variabili Globali (scalari e vettori) intero ordinario e corto a 32 e 16 bit rispettivamente char c; int a; int b = 5; int vet [10]; int * punt; short int d; ORG 1000 // decimale C: DS.B 1 // spazio per 1 byte A: DS.L 1 // oppure DS.B 4 B: DC.L 5 // inizializzazione VET: DS.L 10 // oppure DS.B 40 PUNT: DS.L 1 // oppure DS.B 4 D: DS.W 1 // oppure DS.B 2 DS riserva solo spazio senza inizializzarlo DC riserva spazio e lo inizializza il puntatore (di ogni tipo) è equiparato all intero 7

8 RIPASSO Traduzione Variabili Globali - Struct intero ordinario a 32 bit struct s { char c; int a; } ORG 1000 // decimale S: DS.B 5 // = somma ingombri di c e a S.C: EQU 0 S.A: EQU 1 // spiazzamento di c in s // spiazzamento di a in s tab. dei sim. S 1000 S.C 0 S.A 1 i campi c e a ingombrano un byte e una parola lunga, rispettivamente, pertanto la struct s ingombra cinque byte; la direttiva DS assegna cinque byte a s; la direttiva EQU dichiara gli spiazzamenti S.C e S.A dei campi c e a, rispettivamente, all interno di s; il compilatore rinomina gli spiazzamenti, incorporando il nome della struct, per non confonderli con quelli di eventuali campi omonimi in altre struct 8

9 RIPASSO Traduzione Chiamata a funzione - area di attivazione int f (int p, int q) { area della funzione f } int a; int b;... return... i + i + 12 i + 8 i + 4 i idem eventuali altri registri eventuale registro salvato variabile locale b variabile locale a puntatore all area del chiamante A7 (o SP) = i + A6 (o FP) = i i - 4 i - 8 i - 12 di rientro al chiamante parametro p parametro q / valore in uscita area del chiamante 9

10 RIPASSO Traduzione Chiamata a funzione - // chiamante... // impila parametri // funzione int f (int p, int q) { } int a; int b; // dich. // dich.... // elabora return... // uscita tab. dei sim. p -8 Q -12 A 4 B 8 F: LINK FP, #-8 Q: EQU -12 // spi. par. q P: EQU -8 // spi. par. p A: EQU 4 // spi. var. a B: EQU 8 // spi. var. b... // elabora... // sovrascrive Q UNLK FP RFS EQU dichiara il simbolo senza riservare spazio di memoria; lo spazio viene riservato dal chiamante (impilando i parametri) e da LINK (nella funzione) 10

11 ATTENZIONE I CONCETTI EVIDENZIATI NEL RIPASSO NON SONO SUFFICIENTI PER PASSARE L ESAME Sono solo un piccolo richiamo di alcuni concetti particolari su cui focalizzare la propria attenzione 11

12 12 esercizio n. 5 linguaggio macchina Si chiede Si vuole tradurre in linguaggio macchina simbolico (linguaggio assemblatore) il frammento Si di chiede di scrivere programma riportato qui sotto: programma principale main e funzioni F e G. Nel tradurre non si 1. tenti in 1. di tabella ottimizzare in tabella 1.a le 1.a costanti le costanti e le variabili e le variabili globali, globali, in tabella in tabella 1.b l area 1.b l area di attivazione di attivazione del programma del programma principale principale di scrivere quanto quanto segue: segue: accorpando istruzioni C indipendenti. La memoria ha da 32 bit ed è indirizzabile per byte. main Le main e variabili tabella e in tabella 1.c il 1.c codice il codice in linguaggio linguaggio macchina macchina di main,, di main,, secondo secondo le convenzioni le convenzioni del corso del corso intere sono da 32 bit. Si noti che: Esercizio 2. in 2. tabella in tabella 2.a l area 2.a l area di attivazione 1di attivazione della funzione della funzione G e in G tabella e in tabella 2.b il 2.b codice il codice in linguaggio linguaggio macchina macchina il programma principale main è una funzione e ha area di attivazione, ma non restituisce di nulla; G, secondo di esso G, secondo non le convenzioni le convenzioni del corso; del corso; inoltre inoltre si disegni si disegni l albero l albero sintattico sintattico dell espressione dell espressione in G in G esercizio n. 5 linguaggio macchina ha parametri e ha una variabile locale intera; chiama la funzione F come procedura, passandole 3. in 3. tabella in come tabella 3.a pa-l arerametro l di un elemento del vettore vet, che è una variabile globale usando usando i nomi i nomi delle variabili, delle variabili, parametri, parametri, registri, registri, ecc), ecc), e dove e dove possibile possibile anche anche i valori i valori numerici, numerici, e i valori e i valori 3.a l area di attivazione di attivazione della della funzione funzione F, e F in, tabella e in tabella 3.b il 3.b contenuto il contenuto simbolico simbolico (espresso (espresso Si vuole tradurre in linguaggio macchina simbolico (linguaggio assemblatore) il frammento di programma locali; riportato chiama qui la funzione sotto: G; programma ha effetto collaterale principale sulla variabile main clo for la funzione F non restituisce nulla; essa ha un parametro puntatore a carattere (ossia a byte dell ovvero dell a intero da 8 bit) e non ha variabili delle aree delle di aree attivazione di attivazione impilate impilate di main, di main, di F e di di F G e, di durante G, durante la seconda la seconda iterazione iterazione del ci-del ciclo e (ossia funzioni for vet (ossia quando quando F si e ha G. si i = Nel ha 1), i tradurre = così 1), come così come non risultano si risultano tenti subito subito di dopo ottimizzare dopo l esecuzione l esecuzione dell istruzione dell istruzione LINK LINK e e globale tramite il parametro puntatore p l eventuale salvataggio di registri SOLUZIONI ONLINE accorpando istruzioni C indipendenti. La memoria ha l eventuale salvataggio da 32 bit di registri ed è indirizzabile per byte. Le variabili intere sono da 32 bit. Si noti che: la funzione G restituisce un valore carattere; essa ha un parametro carattere e non ha Le funzioni salvano i registri utilizzati, e le convenzioni per il passaggio di parametri e valore di uscita sono: il programma principale main è una funzione / e programma / ha programma area di attivazione, principale principale ma non / restituisce / nulla; esso non il parametro, se esiste, viene passato sulla pila il valore di uscita, se esiste, viene ha sovrascritto parametri al parametro e ha una sulla variabile pila locale intera; #define chiama #define la funzione N N 3 3 F come / costante / procedura, costante passandole simbolica simbolica come / parametro l di un elemento del vettore vet, che è una variabile globale / char char vet vet [N]; [N]; / variabile / variabile globale globale / / la funzione F non restituisce esercizio nulla; n. essa 5 ha linguaggio un parametro macchina puntatore a carattere (ossia a byte ovvero a intero da 8 bit) e non ha ; chiama void la funzione void main main G; ( ha )( effetto {) { main e in tabella 1.c il codice in linguaggio macchina di main,, Si vuole secondo tradurre le convenzioni in linguaggio del corso macchina simbolico collaterale sulla (linguaggio variabile assemblatore) globale vet il frammento di programma riportato p qui sotto: programma int int i; i; principale / main / e variabile funzioni locale F e G. locale Nel tradurre / / non si tenti di ottimizzare tramite il parametro puntatore di G, secondo le convenzioni del la corso; funzione inoltre si G disegni restituisce l albero sintattico accorpando un valore dell espressione carattere; istruzioni in C essa G indipendenti. for ha for un (i parametro (i = La 0; = memoria 0; i carattere < i N; < ha N; i++) e non i++) { ha da { variabili 32 bit locali ed è indirizzabile per byte. Le variabili intere sono da 32 bit. Si noti Le funzioni salvano i registri utilizzati, e le convenzioni per F che: il passaggio (&vet F (&vet [i]); di [i]); usando i nomi delle variabili, parametri, registri, ecc), e dove possibile anche i valori numerici, e i valori parametri e valore di uscita sono: dell delle aree di attivazione impilate di main, di F e di G, durante la seconda iterazione del ciclo for (ossia quando si ha i = 1), così come risultano subito dopo l esecuzione dell istruzione LINK e il parametro, se esiste, viene il passato programma sulla principale } / pila main } for / for è / una / funzione e ha area di attivazione, ma non restituisce nulla; esso non l eventuale salvataggio di registri il valore di uscita, se esiste, viene ha parametri sovrascritto e ha al una return; parametro variabile return; locale sulla pila intera; chiama la funzione F come procedura, passandole come parametro l } di / un programma in linguaggio C } main / elemento main / del / vettore vet, che è una variabile globale / programma principale Si chiede di scrivere / quanto segue: la funzione F non restituisce nulla; essa ha un parametro puntatore a carattere (ossia a byte ovvero a intero da 8 bit) e non ha ; chiama la funzione G; ha effetto collaterale sulla variabile globale vet / / funzione F / F / / / funzione G / G / 1. in tabella 1.a le costanti e le variabili globali, in tabella 1.b l area di attivazione del programma principale #define N 3 / costante simbolica tramite / il parametro void puntatore void F (char F (char p p) p) { { char char G (char G (char c) c) { { main e in tabella 1.c il codice in linguaggio macchina di main,, secondo le convenzioni del corso char vet [N]; / variabile globale la funzione / G restituisce p = p un G valore = ( p); G ( p); carattere; essa ha un return parametro return (c carattere (c (c (c e non 1) ha 1) + variabili 2); + 2); locali 2. in tabella 2.a l area di attivazione della funzione G e in tabella 2.b il codice in linguaggio macchina void main ( ) { di G, secondo le convenzioni Le funzioni del corso; salvano inoltre i registri si disegni return; utilizzati, return; l albero e le sintattico convenzioni dell espressione per il passaggio } / } G / / G in / G di parametri e valore di uscita sono: int i; 3. in / tabella variabile 3.a l area locale di attivazione il parametro, / della se funzione esiste, } / } F viene /, / e F passato in / tabella sulla 3.b pila il contenuto simbolico (espresso for (i = 0; i < usando N; i++) i nomi { delle variabili, il parametri, valore di uscita, registri, se esiste, ecc), e viene dove sovrascritto possibile anche al parametro i valori numerici, sulla pila e i valori F (&vet [i]); dell delle aree di attivazione impilate di main, di F e di G, durante la seconda iterazione del ciclo for (ossia quando si Si ha chiede i = 1), di scrivere così come quanto risultano segue: subito dopo l esecuzione dell istruzione LINK e } / for / AXO esame AXO esame di martedì di martedì 4 settembre 4 settembre CON SOLUZIONI - CON SOLUZIONI pagina pagina 13 di 213 di 21 l eventuale salvataggio di registri return; 1. in tabella 1.a le costanti e le variabili globali, in tabella 1.b l area di attivazione del programma principale main e in tabella 1.c il codice in linguaggio macchina di main,, secondo le convenzioni del corso } / main / programma in linguaggio C 2. in tabella 2.a l area di attivazione della funzione G e in tabella 2.b il codice in linguaggio macchina / funzione F / / programma / funzione principale G di / G, secondo le / convenzioni del corso; inoltre si disegni l albero sintattico dell espressione in G Si chiede di scrivere quanto segue: 1. in tabella 1.a le costanti e le variabili globali, in tabella 1.b l area di attivazione del programma principale 2. in tabella 2.a l area di attivazione della funzione G e in tabella 2.b il codice in linguaggio macchina in tabella 3.a l area di attivazione della funzione F, e in tabella 3.b il contenuto simbolico (espresso void F (char p) { p = G ( p); return; } / F / char G (char 3. in c) tabella { 3.a l area di attivazione della funzione F, e in tabella 3.b il contenuto simbolico (espresso usando i nomi delle variabili, parametri, registri, ecc), e dove possibile anche i valori numerici, e i valori return (c (c 1) + 2); dell delle aree di attivazione impilate di main, di F e di G, durante la seconda iterazione del ciclo for (ossia quando si ha i = 1), così come risultano subito dopo l esecuzione dell istruzione LINK e } / G / l eventuale salvataggio di registri #define N 3 / costante simbolica / char vet [N]; / variabile globale / void main ( ) { int i; / variabile locale / programma programma in linguaggio linguaggio C C programma in linguaggio C

13 SOLUZIONI ONLINE esercizio n. 5 linguaggio macchina prima parte traduzione da C a codice Esercizio 2 Si vuole tradurre esercizio in linguaggio n. 5 linguaggio macchina macchina simbolico (linguaggio assemblatore) la funzione ricorsiva F riportata qui prima sotto. parte La funzione traduzione F invoca da C a anche codice la funzione G, di cui è riportata la testata. Nel tradurre non si tenti di accorpare Si vuole tradurre od ottimizzare in linguaggio insieme macchina istruzioni simbolico C indipendenti. (linguaggio assemblatore) La memoria ha la funzione da ricorsiva 32 bit F ed è indirizzabile per byte. Le variabili intere sono da 32 bit. Le funzioni salvano sempre i registri utilizzati e le convenzioni per il passaggio dei parametri e del valore di indirizzabile per byte. Le variabili intere sono da 32 bit. ritorno sono le seguenti: riportata qui sotto. La funzione F invoca anche la funzione G, di cui è riportata la testata. Nel tradurre non si tenti di accorpare od ottimizzare insieme istruzioni C indipendenti. La memoria ha da 32 bit ed è Le funzioni salvano sempre i registri utilizzati e le convenzioni per il passaggio dei parametri e del valore di i parametri ritorno sono sono passati le seguenti: sulla pila e caricati in ordine inverso di elencazione (cioè il primo parametro elencato nella testata della funzione è l ultimo a essere caricato sulla pila) il valore di uscita è sovrascritto al primo parametro caricato sulla pila i parametri sono passati sulla pila e caricati in ordine inverso di elencazione (cioè il primo parametro elencato nella testata della funzione è l ultimo a essere caricato sulla pila) il valore di uscita è sovrascritto al primo parametro caricato sulla pila Si chiede di svolgere i punti seguenti: Si chiede di svolgere i punti seguenti: 1. Si scriva in tabella 1 il contenuto simbolico (cioè nomi di variabili, di parametri, ecc) della pila subito 1. Si scriva in tabella 1 il contenuto simbolico (cioè nomi di variabili, di parametri, ecc) della pila subito dopo l esecuzione dell istruzione LINK in seguito a un invocazione di F. dopo l esecuzione dell istruzione LINK in seguito a un invocazione di F. 2. Si scriva 2. in Si tabella scriva 2 in il tabella codice 2 il in codice linguaggio linguaggio macchina di di F F tradotta con le le convenzioni del corso. del corso. 13 funzione F in linguaggio C / testata funzione G / / testata funzione G / int G (int); int G (int); / funzione int F (int F x, int y) { / int F (int x, int y) { funzione F in linguaggio C / funzione F / / variabile locale / int i; / variabile locale / int i; / parte esecutiva / i = x y; if (x <= 0) return G ( y + i ); / parte esecutiva / i = x y; if (x <= 0) return G ( y + i ); else return y F ( x - y, G ( y ) ); } / fine F / else return y F ( x - y, G ( y ) ); Tabella 1

14 SOLUZIONI ONLINE Si supponga che la memoria abbia parole da 16 bit e sia indirizzata per byte. Si svolgano i punti seguenti: a) Nella tabella sotto, si riportino gli indirizzi dove collocare dati e istruzioni. Si consideri che ogni istruzione ha sempre una parola di codice operativo e, se serve, una o più parole aggiuntive. Si tenga conto che lo spiazzamento sia in istruzioni che manipolano dati sia in istruzioni di salto è sempre da 16 bit e che indirizzi e costanti sono corti (16 bit) o lunghi (32 bit) come specifica l istruzione. Esercizio 2 seconda parte processo di assemblaggio Si supponga che la memoria abbia parole da 16 bit e sia indirizzata per byte. Si svolgano i punti seguenti: a) Nella tabella sotto, si riportino gli indirizzi dove collocare dati e istruzioni. Si consideri che ogni i- struzione ha sempre una parola di codice operativo e, se serve, una o più parole aggiuntive. Si tenga conto che lo spiazzamento sia in istruzioni che manipolano dati sia in istruzioni di salto è sempre da 16 bit e che indirizzi e costanti sono corti (16 bit) o lunghi (32 bit) come specifica l istruzione. ORG N: EQU # parole di memoria # byte (in decimale) B: DS.W A: DC.L MOVE A.L, D CICLO: CMP #N.L, D BLT FINE START: MOVE A.L, D MOVEA B.L, A MOVE (A0), D SUB D1, D BRA CICLO BSR FUNZ FINE: END START b) Nella tabella data sotto, si riportino i simboli e i rispettivi valori numerici. 14 tabella dei simboli

15 15 SOLUZIONI ONLINE esercizio n. 5 linguaggio macchina prima esercizio parte n. 5 traduzione linguaggio da C macchina a codice macchina Esercizio 3 Si prima vuole parte tradurre traduzione in linguaggio da C macchina a codice simbolico macchina (linguaggio assemblatore) il frammento di programma (funzioni call e ) riportato qui sotto. Nel tradurre non si tenti di accorpare od ottimizzare insieme Si vuole tradurre in linguaggio macchina simbolico (linguaggio assemblatore) il frammento di programma (funzioni call e ) riportato qui sotto. Nel tradurre non si tenti di accorpare od ottimizzare insieme istruzioni C indipendenti. La memoria ha da 32 bit ed è indirizzabile per byte. Le variabili intere sono da 32 bit. Si noti che: istruzioni C indipendenti. La memoria ha da 32 bit ed è indirizzabile per byte. Le variabili intere sono da 32 la bit. funzione Si noti che: call non restituisce nulla (di fatto è una procedura), non ha parametri e ha due variabili lo- la cali funzione intere; essa call chiama non restituisce la funzione nulla (di fatto (che è una è una procedura), funzione a non tutti ha gli parametri effetti), trattandola e ha due variabili come una locali intere; procedura ossia essa disinteressandosi chiama la funzione del valore in (che uscita è una di funzione a tutti gli effetti), trattandola come una la procedura funzione ossia ricorsiva disinteressandosi restituisce del valore un valore in uscita intero, di ha due parametri e non ha Le funzioni la funzione salvano ricorsiva sempre i registri restituisce utilizzati un e le valore convenzioni intero, per ha due il passaggio parametri dei e non parametri ha variabili e del locali valore sono le seguenti: Le funzioni salvano sempre i registri utilizzati e le convenzioni per il passaggio dei parametri e del valore i parametri sono le seguenti: vengono passati sulla pila e caricati in ordine inverso di elencazione (cioè il primo parametro elencato nella testata della funzione è l ultimo da caricare sulla pila) i parametri vengono passati sulla pila e caricati in ordine inverso di elencazione (cioè il primo parametro elencato il valore di nella uscita, testata se esiste, della funzione viene sovrascritto è l ultimo al da primo caricare parametro sulla pila) caricato sulla pila Si chiede il valore di di scrivere: uscita, se esiste, viene sovrascritto al primo parametro caricato sulla pila Si chiede in tabella di scrivere: 1.a e in tabella 2.a il codice in linguaggio macchina delle funzioni call e, rispettivamente, tradotte secondo le convenzioni del corso in tabella 1.a e in tabella 2.a il codice in linguaggio macchina delle funzioni call e, rispettivamente, tabella 1.b tradotte e in tabella secondo 2.b le il convenzioni contenuto simbolico del corso (espresso usando i nomi delle variabili, parametri, re- in gistri, ecc) e i valori dell dell area di attivazione di call e di quella relativa alla prima invoca- in tabella 1.b e in tabella 2.b il contenuto simbolico (espresso usando i nomi delle variabili, parametri, re- zione di, così come risultano subito dopo l esecuzione dell istruzione LINK e il salvataggio gistri, ecc) e i valori dell dell area di attivazione di call e di quella relativa alla prima invoca- di eventuali registri zione di, così come risultano subito dopo l esecuzione dell istruzione LINK e il salvataggio di eventuali registri frammento di programma in linguaggio C seconda parte simulazione delle chiamate ai sottoprogrammi / funzione frammento call di programma / In modo coerente con quanto risposto nella domanda, in linguaggio si chiede ora C di riportare nella tabella 3 i valori effettivi di void / parametri funzione call e variabili ( call )(ove { disponibili) / presenti nelle aree di attivazione di call e di subito dopo il salvataggio dei registri relativo alla terza invocazione di. void int call i; ( ) { int j i; = 3; tabella 3 contenuto effettivo delle aree di attivazione il valore di uscita, se esiste, viene sovrascritto al primo parametro Si chiede di scrivere: Si chiede di scrivere: in tabella 1.a e in tabella 2.a il codice in linguaggio macchina vamente, in tabella tradotte 1.a e in secondo tabella 2.a le il convenzioni codice in linguaggio del corso macchina vamente, tradotte secondo le convenzioni del corso in tabella 1.b e in tabella 2.b il contenuto simbolico (espresso usan gistri, in tabella ecc) 1.b e i e valori in tabella dell 2.b il contenuto dell area simbolico di attivazione (espresso di call usa zione gistri, di ecc), e i valori così come dell risultano subito dell area dopo di attivazione l esecuzione di cal de di zione eventuali di, registri così come risultano subito dopo l esecuzione de di eventuali registri frammento di programma in lingua frammento di programma in lingua / funzione call / / funzione call / void call ( ) { void call ( ) { int i; int int j i; = 3; int j = 3; i = 0; i = 0; (&i, j); return; (&i, j); return; } / call / } / call / / funzione / / funzione / int (int p, int q) { int (int p, int q) { if (q == 0) { if return (q == 0) 0; { return 0; } else { } else { p = p + 1; p = p + 1; return (p, q 1); return (p, q 1); } / if / } / if / } / / } / / AXO esame di martedì 3 luglio CON SOLUZIONI AXO esame di martedì 3 luglio CON SOLUZIONI

16 16 SOLUZIONI ONLINE esercizio n. 5 linguaggio macchina prima esercizio parte n. 5 traduzione linguaggio da C macchina a codice macchina Esercizio 3 Si prima vuole parte tradurre traduzione in linguaggio da C macchina a codice simbolico macchina (linguaggio assemblatore) il frammento di programma (funzioni call e ) riportato qui sotto. Nel tradurre non si tenti di accorpare od ottimizzare insieme Si vuole tradurre in linguaggio macchina simbolico (linguaggio assemblatore) il frammento di programma (funzioni call e ) riportato qui sotto. Nel tradurre non si tenti di accorpare od ottimizzare insieme istruzioni C indipendenti. La memoria ha da 32 bit ed è indirizzabile per byte. Le variabili intere sono da 32 bit. Si noti che: istruzioni C indipendenti. La memoria ha da 32 bit ed è indirizzabile per byte. Le variabili intere sono da 32 la bit. funzione Si noti che: call non restituisce nulla (di fatto è una procedura), non ha parametri e ha due variabili lo- la cali funzione intere; essa call chiama non restituisce la funzione nulla (di fatto (che è una è una procedura), funzione a non tutti ha gli parametri effetti), trattandola e ha due variabili come una locali intere; procedura ossia essa disinteressandosi chiama la funzione del valore in (che uscita è una di funzione a tutti gli effetti), trattandola come una la procedura funzione ossia ricorsiva disinteressandosi restituisce del valore un valore in uscita intero, di ha due parametri e non ha Le funzioni la funzione salvano ricorsiva sempre i registri restituisce utilizzati un e le valore convenzioni intero, per ha due il passaggio parametri dei e non parametri ha variabili e del locali valore sono le seguenti: Le funzioni salvano sempre i registri utilizzati e le convenzioni per il passaggio dei parametri e del valore i parametri sono le seguenti: vengono passati sulla pila e caricati in ordine inverso di elencazione (cioè il primo parametro elencato nella testata della funzione è l ultimo da caricare sulla pila) i parametri vengono passati sulla pila e caricati in ordine inverso di elencazione (cioè il primo parametro elencato il valore di nella uscita, testata se esiste, della funzione viene sovrascritto è l ultimo al da primo caricare parametro sulla pila) caricato sulla pila Si chiede il valore di di scrivere: uscita, se esiste, viene sovrascritto al primo parametro caricato sulla pila Si chiede in tabella di scrivere: 1.a e in tabella 2.a il codice in linguaggio macchina delle funzioni call e, rispettivamente, tradotte secondo le convenzioni del corso in tabella 1.a e in tabella 2.a il codice in linguaggio macchina delle funzioni call e, rispettivamente, tabella 1.b tradotte e in tabella secondo 2.b le il convenzioni contenuto simbolico del corso (espresso usando i nomi delle variabili, parametri, re- in gistri, ecc) e i valori dell dell area di attivazione di call e di quella relativa alla prima invoca- in tabella 1.b e in tabella 2.b il contenuto simbolico (espresso usando i nomi delle variabili, parametri, re- zione di, così come risultano subito dopo l esecuzione dell istruzione LINK e il salvataggio gistri, ecc) e i valori dell dell area di attivazione di call e di quella relativa alla prima invoca- di eventuali registri zione di, così come risultano subito dopo l esecuzione dell istruzione LINK e il salvataggio di eventuali registri frammento di programma in linguaggio C seconda parte simulazione delle chiamate ai sottoprogrammi / funzione frammento call di programma / In modo coerente con quanto risposto nella domanda, in linguaggio si chiede ora C di riportare nella tabella 3 i valori effettivi di void / parametri funzione call e variabili ( call )(ove { disponibili) / presenti nelle aree di attivazione di call e di subito dopo il salvataggio dei registri relativo alla terza invocazione di. void int call i; ( ) { int j i; = 3; tabella 3 contenuto effettivo delle aree di attivazione il valore di uscita, se esiste, viene sovrascritto al primo parametro Si chiede di scrivere: Si chiede di scrivere: in tabella 1.a e in tabella 2.a il codice in linguaggio macchina vamente, in tabella tradotte 1.a e in secondo tabella 2.a le il convenzioni codice in linguaggio del corso macchina vamente, tradotte secondo le convenzioni del corso in tabella 1.b e in tabella 2.b il contenuto simbolico (espresso usan gistri, in tabella ecc) 1.b e i e valori in tabella dell 2.b il contenuto dell area simbolico di attivazione (espresso di call usa zione gistri, di ecc), e i valori così come dell risultano subito dell area dopo di attivazione l esecuzione di cal de di zione eventuali di, registri così come risultano subito dopo l esecuzione de di eventuali registri frammento di programma in lingua frammento di programma in lingua / funzione call / / funzione call / void call ( ) { void call ( ) { int i; int int j i; = 3; int j = 3; i = 0; i = 0; (&i, j); return; (&i, j); return; } / call / } / call / / funzione / / funzione / int (int p, int q) { int (int p, int q) { if (q == 0) { if return (q == 0) 0; { return 0; } else { } else { p = p + 1; p = p + 1; return (p, q 1); return (p, q 1); } / if / } / if / } / / } / / AXO esame di martedì 3 luglio CON SOLUZIONI AXO esame di martedì 3 luglio CON SOLUZIONI

17 Introduzione al design di architetture hardware su FPGA Iscrizione richiesta Giovedì 22 Gennaio 2015 Aula S05 Scaricate la macchina virtuale prima del laboratorio Il download è di 30GB Vi servono almeno 80GB sul vostro PC Consiglio di venire in gruppi di 3-4 persone 17

18 in bocca al lupo! E STUDIATE! 18

19 Alla prossima lezione 19

Tecniche di traduzione da C ad assembly 68000. Note generali

Tecniche di traduzione da C ad assembly 68000. Note generali Tecniche di traduzione da C ad assembly 68000 Note generali Schema di compilazione da C ad assembly 68K Ispirato a GCC Fa uso di: banco di registri classi d istruzioni modi d indirizzamento e organizzazione

Dettagli

#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C

#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma (main e funzione funz) riportato

Dettagli

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000 AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono

Dettagli

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Traduzione da C a Catena di compilazione

Traduzione da C a Catena di compilazione Traduzione da C a 68000 Vittorio Zaccaria Dicembre 2009 Catena di compilazione utilizzo di linguaggi intermedi di(ir) Analisi sintattica e trattamento degli errori Generazione del codice macchina linguaggio

Dettagli

AXO Architettura dei Calcolatori e Sistemi Operativi. come tradurre da C a (un possibile modello per generare codice macchina)

AXO Architettura dei Calcolatori e Sistemi Operativi. come tradurre da C a (un possibile modello per generare codice macchina) AXO Architettura dei Calcolatori e Sistemi Operativi come tradurre da C a 68000 (un possibile modello per generare codice macchina) catena di traduzione (breve riassunto) struttura generale il processo

Dettagli

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori

Dettagli

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm Struttura interna del sistema Operativo Linux CAP. 4: Aspetti generali del Sistema Operativo Linux CAP. 5: Funzionalità del calcolatore l http://home.dei.polimi.it/silvano/acso.htm Funzionalità del Sistema

Dettagli

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva

Dettagli

Linguaggio Assembler MIPS

Linguaggio Assembler MIPS Linguaggio Assembler MIPS Corso di Calcolatori Elettronici Corso di Calcolatori Elettronici A A.A. 2000/2001 Dr. Daniela Fogli Notazione Operazioni aritmetiche: Somma add a, b, c fa la somma di b e c e

Dettagli

Sottoprogrammi in linguaggio assembly del Motorola 68000

Sottoprogrammi in linguaggio assembly del Motorola 68000 Sottoprogrammi in linguaggio assembly del Motorola 68000 Daniele Paolo Scarpazza daniele.scarpazza@elet.polimi.it Politecnico di Milano Ultimo aggiornamento: 10 Maggio 2005 Bibliografia Sezioni 4.9, 5.6

Dettagli

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale didattico,

Dettagli

Lezione E12. Sistemi operativi open-source, embedded e real-time

Lezione E12. Sistemi operativi open-source, embedded e real-time Lezione E12 Sistemi operativi open-source, embedded e real-time 17 dicembre 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SOSERT 13 E12.1 Di

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

come tradurre da C a MIPS un modello per generare codice macchina

come tradurre da C a MIPS un modello per generare codice macchina AXO Architettura dei Calcolatori e Sistemi Operativi come tradurre da C a MIPS un modello per generare codice macchina (tratto da Patterson & Hennessy 4a ed. italiana) catena di traduzione (breve riassunto)

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Istruzioni di modifica della sequenza di elaborazione

Istruzioni di modifica della sequenza di elaborazione Istruzioni di modifica della sequenza di elaborazione Permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

Corso di Sicurezza Informatica

Corso di Sicurezza Informatica Corso di Sicurezza Informatica Sicurezza del Software Ing. Giuseppe D Aquì Sicurezza nell informatica Un computer sicuro è un computer spento (Kevin Mitnick) Attacchi informatici Gli attacchi informatici,

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

Linguaggio macchina. 73.1 Organizzazione della memoria. 73.1.1 Pila per salvare i dati. 73.1 Organizzazione della memoria... 37

Linguaggio macchina. 73.1 Organizzazione della memoria. 73.1.1 Pila per salvare i dati. 73.1 Organizzazione della memoria... 37 37 Linguaggio macchina Capitolo 73 73.1 Organizzazione della memoria.............................................. 37 73.1.1 Pila per salvare i dati............................................... 37 73.1.2

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate

Dettagli

Programmazione dello Z80

Programmazione dello Z80 Il microprocessore si incarica di: gestire il programma e i suoi dati di eseguire i calcoli richiesti. Le azioni appena elencate rendono necessario che il microprocessore abbia da qualche parte, al suo

Dettagli

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Implementazione di Utilizzo ricorsione per processare dati in java vs. multipla

Dettagli

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore. 1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

Problem solving elementare su dati vettoriali

Problem solving elementare su dati vettoriali Problem solving elementare su dati vettoriali Introduzione Verifiche su sequenze di dati Selezione o ricerca di dati 2 2006 Politecnico di Torino 1 Introduzione (1/2) I problemi di verifica consistono

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Assemblaggio per il processore Motorola 68000

Assemblaggio per il processore Motorola 68000 Assemblaggio per il processore Motorola 68000 Daniele Paolo Scarpazza daniele.scarpazza@elet.polimi.it Politecnico di Milano Ultimo aggiornamento: 16 Maggio 2005 Assemblaggio A prima vista sembra un problema

Dettagli

INFORMATICA - I puntatori Roberta Gerboni

INFORMATICA - I puntatori Roberta Gerboni 1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

VARIABILI LOCALI E GLOBALI (ESTERNE)

VARIABILI LOCALI E GLOBALI (ESTERNE) VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Cenni ad Assembly Intel

Cenni ad Assembly Intel Cenni ad Assembly Intel Luca Abeni April 17, 2015 Architerrura Intel Utilizzata sulla maggior parte dei laptop, desktop e server moderni Lunga storia Dagli anni 70 (Intel 8080-8 bit!)......fino ad oggi

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Puntatori Passaggio di parametri per indirizzo

Puntatori Passaggio di parametri per indirizzo Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Puntatori Passaggio di parametri per indirizzo Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack (tradotto talvolta in italiano con pila o catasta) è un'area di memoria privilegiata, dove il microprocessore può salvare

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/03/07 Nota Questi lucidi sono tratti

Dettagli

Le costanti Le modalità di indirizzamento L assembly del MIPS

Le costanti Le modalità di indirizzamento L assembly del MIPS Le costanti Le modalità di indirizzamento L assembly del MIPS Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/45 Sommario Le costanti

Dettagli

AMBIENTE DI SIMULAZIONE ASIM

AMBIENTE DI SIMULAZIONE ASIM LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 10 Prof. Rosario Cerbone rosario.cerbone@uniparthenope.it http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 AMBIENTE DI SIMULAZIONE ASIM Digitazione

Dettagli

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Implementazione delle primitive di comunicazione Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Struttura dati canale {

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma La Sapienza WARNING Questo canale è solo per studenti di Fisica il cui cognome inizia con le lettere A-D Laboratorio

Dettagli

Corso di Informatica Applicata. Lezione 5. Università degli studi di Cassino

Corso di Informatica Applicata. Lezione 5. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 5 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi

Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi Tipi di dato testuali Caratteri Stringhe Caratteri e stringhe 5 Tipi di dato testuali I programmi visti finora erano in grado di elaborare esclusivamente informazioni numeriche Numeri eri (), numeri reali

Dettagli

Il simulatore SPIM SPIM

Il simulatore SPIM SPIM Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html

Dettagli

GESTIONE DELLA MEMORIA CENTRALE

GESTIONE DELLA MEMORIA CENTRALE GESTIONE DELLA MEMORIA CENTRALE E MEMORIA VIRTUALE 7.1 Gestione della memoria Segmentazione Segmentazione con paginazione Memoria Virtuale Paginazione su richiesta Sostituzione delle pagine Trashing Esempi:

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi. 5 Gestione della memoria Gestione della memoria Compiti del gestore della memoria: Tenere traccia di quali parti della memoria sono libere e quali occupate. Allocare memoria ai processi che ne hanno bisogno. Deallocare la memoria

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Programma di Paradigmi e possibili domande. Capitolo 1

Programma di Paradigmi e possibili domande. Capitolo 1 Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI LUCIDI LEZIONI SISTEMI ELETTRONICI INDUSTRIALI www.dismi.unimo.it (People Associated Pavan ) www.microchip.com com (Datasheet PIC - DS30292) (Mid Range Family Manual DS33023) Università degli Studi di

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Calcolatori Elettronici Parte X: l'assemblatore as88

Calcolatori Elettronici Parte X: l'assemblatore as88 Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

Assembler Intel 80x86: Struttura di un programma e Direttive

Assembler Intel 80x86: Struttura di un programma e Direttive Assembler Intel 80x86: Struttura di un programma e Direttive Calcolatori Elettronici B a.a. 2004/2005 Massimiliano Giacomin 1 Istruzioni e direttive Formato generale dei comandi: [nome] codice operazione

Dettagli

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile Corso di Laurea in Ingegneria Biomedica Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa Prof. Fabio Solari: fabio.solari@unige.it (010-3532059) Prof. Manuela Chessa: manuela.chessa@unige.it

Dettagli

int f(char *s, short n, float x) {... } /* definizione di f */ int f(char *, short, float); /* prototipo di f */

int f(char *s, short n, float x) {... } /* definizione di f */ int f(char *, short, float); /* prototipo di f */ Prototipi di funzione Il prototipo di una funzione costituisce una dichiarazione della funzione, e come tale fornisce al compilatore le informazioni necessarie a gestire la funzione stessa. Nella definizione

Dettagli

MULTIPROGRAMMAZIONE E PROTEZIONE. G. Frosini Multiprogrammazione e Protezione Slide 1

MULTIPROGRAMMAZIONE E PROTEZIONE. G. Frosini Multiprogrammazione e Protezione Slide 1 MULTIPROGRAMMAZIONE E PROTEZIONE G. Frosini Multiprogrammazione e Protezione Slide 1 SISTEMI MULTIPROGRAMMATI Sistema di elaborazione con un solo processore: può eseguire un solo programma alla volta;

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS Massimiliano Giacomin 1 Architettura MIPS Architettura RISC e load-store sviluppata da John Hennessy nel 1981 Usata da NEC, Nintendo,

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2012 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti q Funzioni e domini definiti

Dettagli

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale

Dettagli

Gestione dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Sottoprogrammi e MIPS. Espressioni algebriche. Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Sottoprogrammi e MIPS Espressioni algebriche Capitolo 2 P&H Sottoprogrammi Modello di chiamata Area di attivazione Calcolare un espressione algebrica 2

Dettagli

Elementi di Architettura e Sistemi Operativi

Elementi di Architettura e Sistemi Operativi Elementi di Architettura e Sistemi Operativi Bioinformatica - Tiziano Villa 15 Giugno 2015 Nome e Cognome: Matricola: Posta elettronica: problema punti massimi i tuoi punti problema 1 4 problema 2 6 problema

Dettagli

Lezione 16: L architettura LC-3

Lezione 16: L architettura LC-3 Lezione 16: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 15 Maggio 2013 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Compito di Fondamenti di Informatica

Compito di Fondamenti di Informatica Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette

Dettagli

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi

Software Applicativo. Hardware. Sistema Operativo Software di Base Traduttori e Linguaggi : di base e applicativo L HardWare (monitor, tastiera, circuiti, stampante, ) è il nucleo fondamentale del calcolatore ma da solo non serve a nulla. Bisogna utilizzare il software per poterlo fare funzionare.

Dettagli

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore Il processore Architettura dell elaboratore Il processore La esegue istruzioni in linguaggio macchina In modo sequenziale e ciclico (ciclo macchina o ciclo ) Effettuando operazioni di lettura delle istruzioni

Dettagli

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria

90.1 Sistemi di numerazione. 90.1.1 Sistema decimale. 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 605 Capitolo 90 Dai sistemi di numerazione all organizzazione della memoria 90.1 Sistemi di numerazione.................................................... 605 90.1.1 Sistema decimale..................................................

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Dettagli

Appello di Informatica B

Appello di Informatica B Politecnico di Milano Facoltà di Ingegneria Industriale 19 febbraio 2004 Appello di Informatica B Prof. Angelo Morzenti - Prof. Vincenzo Martena Cognome e nome: Matricola: Tipo di prova: recupero I prova

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

Gestione dinamica di una pila

Gestione dinamica di una pila Gestione dinamica di una pila Una pila o stack è una lista lineare a lunghezza variabile in cui inserimenti (push) ed estrazioni (pop) vengono effettuate ad un solo estremo, detto testa (top) della pila.

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

Funzioni e procedure

Funzioni e procedure Funzioni e procedure DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli