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 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

programma in linguaggio C esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina

programma in linguaggio C esercizio n. 5 linguaggio macchina prima parte codifica in linguaggio macchina 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

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

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

Esercizi. Assembly. Alessandro A. Nacci ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 Esercizio 1 Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma C (programma

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

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

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

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

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

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

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

Invocazione di funzioni. Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione)

Invocazione di funzioni. Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione) Invocazione di funzioni Passaggio parametri Creazione record di attivazione (anche chiamato stack frame o area di attivazione) Passaggio parametri F(a,b,c) { } Z = g(x, y, z) Record di attivazione o registri

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

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

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

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

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

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

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

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

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

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

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

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di

Dettagli

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

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

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

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello): Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande

Dettagli

Liberare la memoria allocata dinamicamente.

Liberare la memoria allocata dinamicamente. Scrivere un programma per la gestione dei libri e dei prestiti di una biblioteca universitaria. I libri sono caratterizzati dalle seguenti informazioni: titolo, autore, collocazione del libro, numero di

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

costruttori e distruttori

costruttori e distruttori costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)

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

esercizio n. 2 linguaggio macchina #define MAX = 3 / variabili globali / int a = 5; int b = 10; int h;

esercizio n. 2 linguaggio macchina #define MAX = 3 / variabili globali / int a = 5; int b = 10; int h; esercizio n. 2 linguaggio macchina Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) 68000 il programma C riportato sotto, costituito da programma principale main e dalle funzioni

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

void funzioneprova() { int x=2; cout<<dentro la funzione x=<<x<<endl; } FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo

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

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Sottoprogrammi: astrazione procedurale

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

Dettagli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per

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

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

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

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

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

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

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

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

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 18 31/03/2014 Funzioni: Dichiarazione e Definizione La dichiarazione di una funzione serve a comunicare al compilatore quali sono

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

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

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

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Sistema inoltro telematico domande di nulla osta, ricongiungimento e conversioni Manuale utente Versione 2 Data creazione 02/11/2007 12.14.00

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

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

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

Raggruppamenti Conti Movimenti

Raggruppamenti Conti Movimenti ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli

Dettagli

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Calcolatore: sottosistemi Processore o CPU (Central Processing

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

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

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

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

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

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica prof. ing. Corrado Santoro Schema a blocchi di una CPU Arithmetic Logic Unit Control Unit Register File BUS Control

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

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

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica Dynamic Linking Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica Dynamic Linking Il linking tra i moduli di un programma e le librerie da esso utilizzate può essere Statico

Dettagli

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola 68000. Ultima modifica: 10 Maggio 2005. Autore: Daniele Paolo Scarpazza. Per segnalare eventuali difficoltà o problemi,

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

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

http://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

http://esamix.labx Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( ) Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

Programmazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano

Programmazione. Laboratorio. Roberto Cordone DI - Università degli Studi di Milano Gestione della memoria p. 1/11 Programmazione Laboratorio Roberto Cordone DI - Università degli Studi di Milano Tel. 02 503 16235 E-mail: roberto.cordone@unimi.it Ricevimento: su appuntamento Lezioni:

Dettagli

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde? Leggete attentamente le domande del test e date la/le vostra/e risposta/e. 1) Per quanto tempo la memoria RAM di un personal computer conserva le informazioni? Finchè lo hard disk funziona in modo corretto

Dettagli

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA" V i a A n g e l o Ma j, 1 2 4 1 2 1 B E R G A M O 035 237502 Fax: 035 236331 Sito e contatti: www.liceolussana.com Codice fiscale: 80026450165 PROGRAMMA SVOLTO

Dettagli

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria

Dettagli

MODELLI DI MEMORIA e CALL

MODELLI DI MEMORIA e CALL Corso di Archite?ura degli Elaboratori Modulo di Assembly MODELLI DI MEMORIA e CALL Bruno Iafelice University of Bologna iafelice at cs(dot)unibo(dot)it 1 ArgomenC Modelli di memoria per 8088 Chiamata

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

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

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

Esercizio: gestione di un conto corrente

Esercizio: gestione di un conto corrente Esercizio: gestione di un conto corrente Si realizzi un conto corrente bancario mediante: - una ASTRAZIONE DI DATO - un TIPO DI DATO ASTRATTO Il conto corrente è caratterizzato dalle seguenti informazioni:

Dettagli

Il descrittore di processo (PCB)

Il descrittore di processo (PCB) Il descrittore di processo (PC) Il S.O. gestisce i processi associando a ciascuno di essi un struttura dati di tipo record detta descrittore di processo o Process Control lock (PC) Il PC contiene tutte

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

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