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

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

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

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

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

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

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

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

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

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

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

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

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

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

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

Passaggio di Parametri per Valore o Indirizzo

Passaggio di Parametri per Valore o Indirizzo Passaggio di Parametri per Valore o Indirizzo Come in C, l assembler permette di passare un dato per valore (copia) o per indirizzo, nel secondo caso rendendo modificabile il dato stesso da dentro una

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Definizione di classi con array di oggetti

Definizione di classi con array di oggetti Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per

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

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

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

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente

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

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

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

PROGRAMMAZIONE MISTA. G. Frosini Programmazione mista Slide 1

PROGRAMMAZIONE MISTA. G. Frosini Programmazione mista Slide 1 PROGRAMMAZIONE MISTA G. Frosini Programmazione mista Slide 1 Caratteristiche del processore PC Processore PC (Processore Completo): processore didattico; schematizzazione (software compatibile) dei processori

Dettagli

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

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

Laboratorio di Architettura degli Elaboratori

Laboratorio di Architettura degli Elaboratori Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Introduzione a MARS: interfaccia, struttura di un programma, gestione dell input L assemblatore e simulatore MARS Permette di eseguire

Dettagli