Traduzione da C a Catena di compilazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Traduzione da C a Catena di compilazione"

Transcript

1 Traduzione da C a Vittorio Zaccaria Dicembre 2009 Catena di compilazione utilizzo di linguaggi intermedi di(ir) Analisi sintattica e trattamento degli errori Generazione del codice macchina linguaggio di alto livello assembly Ottimizzazione del codice macchina Assemblaggio e collegamento facoltativa codice oggetto (sinonimi binario, eseguibile, linguaggio macchina) 1

2 Analisi sintattica Analisi sintattica e generazione del codice verifica se il programma è int a; sintatticamente corretto segnala errori e warnings Generazione di codice il programma viene tradotto in linguaggio macchina il codice macchina prodotto è in forma simbolica (.S) ling. sorgente di alto livello char c; a = c + 1; A: DS.L 1 // int a C: DS.B 1 // char c MOVE.B C, D0 ADDI.B #1, D0 MOVE.L D0, A ling. macchina simbolico Assemblaggio e collegamento Assemblaggio: risolve simboli assemblatore indirizzo di memoria etichetta d istruzione Spiazzamento L istruzione simbolica viene tradotta in codifica numerica Collegamento unisce più moduli eseguibili per esempio programma e librerie standard (IO ecc) A: DS.L 1 // int a C: DS.B 1 // char c MOVE.B C, D0 ADDI.B #1, D0 MOVE.L D0, A ling. macchina simbolico codici operativi MOVE.B 1010 ADDI.B 1100 tab. dei simboli A 1010 C ling. macchina numerico 2

3 Note aggiuntive su assemblaggio e linker Assemblaggio Genera per ogni modulo: la tabella bll dii dei simboli lidl del modulo, generando il codice oggetto I riferimenti simbolici esterni Funzioni (extern) Variabili globali Modulo assemblato da indirizzo 0; Direttiva ORG: serve a posizionare l area istruzioni e viene gestito dal loader e dal Sistema Operativo (modulo di gestione della memoria) 3

4 Assemblaggio Etichette di salto: causano il problema forward references (risolto in 2 passi) CMP.L #0, D0 BGE LABEL_POS NEG.L D0 LABEL_POS Assemblaggio Costruzione tabella simboli modulo: indirizzi numerici di tutti i simboli Contiene anche cosanti simboliche (EQU) Per etichette che definiscono variabili Variabili non inizializzate vengono allocate in.bss Variabili inizializzate messe in.data Etichette associate ai salti Viene calcolato l offset (se possibile) Indirizzo assoluto (se possibile) 4

5 Linker Collega piu di un modulo oggetto/libreria Genera un unico programma binario eseguibile (in formato rilocabile) Unico spazio di indirizzamento Tecniche di traduzione da C ad assembly Note generali 5

6 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 del sottoprogramma Consiste in Traduzione statement tt tcc Traduzione invocazioni funzioni C Traduzione delle strutture di controllo Application Binary Interface Specifica di: Dimensione dei tipi di dati Allineamento dati e istruzioni Convenzioni di chiamata delle funzioni (passaggio parametri) Chiamate al sistema operativo Struttura dell eseguibile 6

7 Ingombro in memoria delle variabili Unita minima indirizzabile: singolo byte In C (Linux): sizeof (char) = 1 byte sizeof (short int) = 2 byte sizeof (int) = 4 byte sizeof (long int) = 8 byte (non utilizzabile su M68k) sizeof (array) = somma ingombri elementi sizeof (struct) = somma ingombri campi Non considereremo floating point 13 Posizione in memoria delle variabili C Globali: allocate a indirizzo prefissato Locali: allocate sulla pila Dinamiche: allocate sullo heap (gestito a sua volta all interno dell area dati del processo) D/A Op D/A. Op MEM Utilizzo tipico dei registri da parte del compilatore nel calcolo di un espressione o statement. MEM 7

8 Convenzioni per uso dei registri D0 D7 per variabili di tipo carattere o intero A0 A7 per variabili di tipo indirizzo registri A0 A5: indici a vettori registro A6 (o FP) come puntatore all area di attivazione registro A7 (o SP) come puntatore alla pila (usp o ssp) Il registro SR contiene i bit di esito Aggiornato da (MOVE CMP ADD SUB NEG ecc AND OR NOT ecc) Usato da istruzioni Bcc e DBcc 15 Dimensionamento dati 8 bit per carattere 32bit per intero Le istruzioni assembly devono avere un suffisso: B per dato da 8 bit byte W per dato da 16 bit parola L per dato da 32 bit parola lunga o doppia Es: MOVE.B D1, D2 // D2 [D1] 8 bit meno signif. MOVE.W D1, D2 // D2 [D1] 16 bit meno signif. MOVE.L D1, D2 // D2 [D1] registro completo 16 8

9 Dimensionamento indirizzi Registri d indirizzo (A0 A5): a 16 bit per memoria fisica i max da 64 K byte a 32 bit per memoria fisica max da 4 G byte Suffissi: W per indirizzo da 16 bit indirizzo corto L per indirizzo da 32 bit indirizzo lungo Es.: MOVEA.W A1, A2 // A2 [A1] 16 bit meno signif. MOVEA.L A1, A2 // A2 [A1] registro completo 17 Variabili globali conversione char c; int a; int b = 5; int vet [10]; int punt; short int d; ORG 1000 // decimale C: DS.B 1 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 tab. dei simboli C 1000 A 1001 B 1005 VET 1009 PUNT 1039 D 1043 DS riserva solo spazio senza inizializzarlo DC riserva spazio e lo inizializza il puntatore (di ogni tipo) è equiparato all intero 18 9

10 Variabile globale struct struct s { char c; int a; } tab. dei sim. S 1000 S.C 0 S.A 1 ORG 1000 // decimale S: DS.B 5 // = somma ingombri di c e a S.C: EQU 0 // spiazzamento di c in s S.A: EQU 1 // spiazzamento di a in s Allocazione spazio per l intera struct Definizione dei simboli di spiazzamento per l accesso agli elementi tidll della struct t Utilizzo del. per differenziare gli spiazzamenti da altre struct 19 Tecniche di traduzione da C ad assembly Traduzione di: Semplici statement Strutture di controllo Invocazione delle funzioni Espressioni 10

11 Traduzione semplici statement Regola base per la traduzione dei semplici statement C Assumiamo che lo statement sia una semplice manipolazione della variabile Assumere che la variabile sia sempre collocata in memoria Come tradurre gli statement C Caricando le variabili nei registri all inizio dello statement (o non appena serve) Memorizzandole allafine dello statement Ogni variabile cambiata deve essere memorizzata il prima possibile

12 Esempio, variabile globale intera int a; a = a + 1; A: DS.L 1 // spazio per int MOVE.L A, D0 // D0 [A] ADDI.L #1, D0 // D0 [D0] + 1 MOVE.L D0, A // A [D0] oppure (ottimizza senza passare per il registro D0) ADDI.L #1, A // A [A] + 1 dato che ADDI può lavorare direttamente in memoria 23 Variabile globale per puntatore int a; int punt; punt = &a; punt = punt + 1; A: DS.L 1 // spazio per int PUNT: DS.W 1 // spazio per punt // punt = &a MOVEA.W #A, A0 // A0 A MOVE.W A0, PUNT // PUNT [A0] // punt = punt + 1 MOVEA.W PUNT, A0 // A0 [PUNT] MOVE.L (A0), D0 // D0 [[A0]] ADDI.L #1, D0 // D0 [D0] + 1 MOVE.L D0, (A0) // [A0] [D0] non confondere tra assegnamento a puntatore (che ne modifica la cella di memoria) e a oggetto puntato (che non modifica la cella di memoria del puntatore) 24 12

13 Variabili locali int f () { int a; a = a + 1; } // LINK e altre EQU A: EQU 8 // vedi area di attivazione MOVE.L A(FP), D0 // D0 [A + [FP]] ADDI.L #1, D0 // D0 [D0] + 1 MOVE.L D0, A(FP) // A + [FP] [D0] oppure (ottimizza senza passare per il registro D0) 1 ADDI.L #1, A(FP) // A + [FP] [A + [FP]] + dato che ADDI può lavorare direttamente in memoria 25 Tecniche di ottimizzazione int a; int b; int c; a = a + b; c = a + 2; codice C di alto livello sorgente A: DS.L 1 B: DS.L 1 C: DS.L 1 // a = a + b MOVE.L A, D0 MOVE.L B, D1 ADD.L D0, D1 MOVE.L D1, A // c = a + 2 MOVE.L A, D0 ADDI.L #2, D0 MOVE.L D0, C A: DS.L 1 B: DS.L 1 C: DS.L 1 // a = a + b MOVE.L A, D0 ADD.L B, D0 MOVE.L D0, A // c = a + 2 MOVE.L A, D0 ADDI.L #2, D0 MOVE.L D0, C unificate A: DS.L 1 B: DS.L 1 C: DS.L 1 // a = a + b MOVE.L A, D0 ADD.L B, D0 MOVE.L D0, A // c = a + 2 ADDI.L #2, D0 MOVE.L D0, C eliminata codice plain ossia non ottimizzato unifica tramite semiortogonalità di ADD elimina tenendo var in registro dato D

14 Traduzione strutture di controllo If then if(cond) { Body } Test!COND Body vero Resto del programma 14

15 If then // var. globale int a; // condizione if (a == 5) { // ramo then } / end if / // seguito A: DS.L 1 // riserva mem per a MOVE.L A, D0 // D0 [A] CMPI.L #5, D0 // esiti [D0] 5 BNE FINE // se!= 0 va a FINE // ramo then FINE: // seguito va modificato com è ovvio per >, <, <=, == e!= idem se a è variabile locale od oggetto puntato 29 If then else if(cond) { b_then } else { b_else } Test!COND b_then BRA belse b_else Resto del programma vero 15

16 If then else // var. globale int a; // condizione if (a >= 5) { // ramo then } else { // ramo else } / end if / // seguito A: DS.L 1 // riserva mem per a MOVE.L A, D0 // D0 [A] CMPI.L #5, D0 // esiti [D0] 5 BLT ELSE // se < 0 va a ELSE // ramo then BRA FINE // va a FINE ELSE: // ramo else FINE: // seguito va modificato com è ovvio per >, <, <=, == e!= idem se a è variabile locale od oggetto puntato 31 While while(cond) { Body... } Test!COND Body BRA Resto del programma vero 16

17 While // var. globale int a; // condizione while (a >= 5) { // corpo } / end while / // seguito A: DS.L 1 // riserva mem per a CICLO: MOVE.L A, D0 // D0 [A] CMPI.L #5, D0 // esiti [D0] 5 BLT FINE // se < 0 va a FINE // corpo del ciclo BRA CICLO // torna a CICLO FINE: // seguito del ciclo va modificato com è ovvio per >, <, <=, == e!= idem se a è variabile locale od oggetto puntato 33 For INIZ for(iniz; COND; INCR) { Body } Test!COND Body INCR BRA Resto del programma vero 17

18 For // variabile globale int a; // testata del ciclo for (a = 1; a <= 5; a++) { // corpo del ciclo } / end for / // seguito del ciclo la variabile di conteggio a viene aggiornata in fondo al corpo del ciclo ( a++ è post-incremento) A: DS.L 1 // riserva mem per a MOVE.L #1, D0 // D0 1 a = 1 MOVE.L D0, A // A [D0] CICLO: MOVE.L A, D0 // D0 [A] a <= 5 5 CMPI.L #5, D0 // esiti [D0] BGT FINE // se > 0 va a FINE // corpo del ciclo a++ MOVE.L A, D0 // D0 [A] ADDI.L #1, D0 // D0 [D0] + 1 MOVE.L D0, A // A [D0] BRA CICLO // torna a CICLO FINE: // seguito del ciclo 35 va modificato per > < <= e a ++a a Invocazione di funzioni Passaggio parametri Creazione record diattivazione Creazione record di attivazione (anche chiamato stack frame o area di attivazione) 18

19 Passaggio parametri F(a,b,c) { registri Z = g(x, y, z) } Record di attivazione o Record di attivazione o registri Usare registri iin input puo implicare il salvataggio di tali registri se si invocano altre funzioni innestate. Usare registri in output puo implicare un salvataggio da parte di chi chiama (caller) Passaggio parametri In questa lezione tratteremo il passaggio parametri tivia record di attivazione i (i (sia in ingresso che in uscita) Riserveremo un opportuno spazio nel record di attivazione per tali parametri 19

20 Record di attivazione Altre variabili Variabili blocchi innestati C (FP) Salvataggio registri usati Record di attivazione (stack frame) composto da: Variabili locali Prev. stack frame pointer Ind. Rit. Par. in ingresso g(r,s,t) chiama FP Prev. FP Record di attivazione g SP SP f(a,b,c) FP Record di attivazione f Records funzioni precedenti SP Struttura di una chiamata a funzione (M68K) Main() Posiziona mento { parametri abcnel a,b,c record di attivazione di f r=f(a,b,c) } Salto ad f Main f(a,b,c) { int x,y; return d; } d viene salvato al posto di c (nel record di attivazione di f) al ritorno dalla funzione Creazione spazio per x, y sul record di attivazione Salvataggio altre info temporane sul record di attivazione f 20

21 Chiamata/ritorno da sottoprog. Chiamata BSR (branch to subroutine) salto vicino JSR (jump to subroutine) salto lontano Ritorno SP [SP] 4 [SP] [PC] PC i.e. dest. RFS (return from subroutine) PC [[SP]] SP [SP] Record di attivazione int f (int p, int q) { int a; int b; return } A7 (o SP) A6 (o FP) = i i - area della funzione f idem eventuali altri registri i - 12 eventuale registro it salvato i -8 i -4 i i + 4 i + 8 i + 12 variabile locale b variabile locale a puntatore al record del chiamante indirizzo dirientro al chiamante parametro p parametro q area del chiamante 42 21

22 Gestione record di attivazione // chiamante // impila parametri // funzione int f (int p, int q) ) { int a; // dich. int b; // dich. // elabora return // uscita } tab. dei sim. p 8 Q 12 A -4 B -8 F: LINK FP, # 8 P: EQU 8 // spi. par. p Q: EQU 12 // spi. par. q 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) 43 Riassumendo I record di attivazione formano una lista concatenata Creazione del record: LINK A6, # N (N è la dimensione delle variabili locali) Deallocazione del record: UNLK A6 I parametri sono allocati in ordine inverso hanno spiazzamento positivo rispetto a FP le variabili locali hanno spiazzamento negativo rispetto a FP 22

23 Schema di sottoprogramma SUB1: LINK A6, #-N // riservo spazio per le var locali di SUB1 MOVEM.L D1-,-(SP) // salvo i registri che uso // preparazione a chiamata di un altra funzione con due parametri MOVE.L, -(SP) // push secondo parametro MOVE.L, -(SP) // push primo parametro BRS SUB2 // chiamata ADDA.L #4, SP // pop (n-1)parametri * dim parametri MOVE.L (SP)+, // spilo e uso il valore in uscita di SUB2 // sovrascritto al primo parametro MOVE.L, spiaz.(a6) // salvo in stack il valore restituito da SUB1 in posizione (+4 per ind.rit. + 4(n), n numero di parametri, 4 dim parametri) rispetto a FP MOVEM.L (SP)+,D1- // ripristino i registri UNLK A6 // elimino var. locali RTS // ritorno al chiamante 45 Conversione espressioni 23

24 Albero sintattico Esempio di statement C: Z=(A+B)*(C-D)+5 ALBERO SINTATTICO Z * = A B C D Albero intermedio annotato con loads e stores Z stor e legenda Risultato temporaneo Contenuto in un registro Valore di una variabile In memoria * load load load load Ipotesi variabili globali A B C D 24

25 Tile Ogni istruzione e rappresentabile come un tile, il quale ha una forma ad albero. E un pattern MOVE Da, indirizzo_ var indirizzo_var (globale) store tile Da Altro esempio di tile Da MOVE indirizzo_var, Da load tile indirizzo_var 25

26 Altro esempio di tile Operazioni binarie aritmetiche (ADD, MUL, SUB etc.) SUB Da, Db Db (Db-Da) Db Da SUB #cost, Da ATTENZIONE ALL ORDINE OPERANDI Da Da cost Instruction selection Copertura totale dell albero lb con i tile delle istruzioni a disposizione Z stor e + 5 * + load load load load A B C D 26

27 Allocazione dei registri Z Allocare i registri stor associati itialle e load D2 I registri D2 associati ai D1 * D2 trasferimenti + temporanei sono bloccati + 5 D0 D1 D2 D3 load load load load A B C D Generazione del codice Visitare l albero in post ordine stor Scegliere sempre e strada a sinistra Ultima volta che si + 5 esce dal nodo * numerarlo e generare istruzione + Z load load load load A B C D 27

28 Codice generato MOVE.L A, D0 MOVE.L B, D1 ADD.L D0, D1 MOVE.L C, D2 MOVE.L D, D3 SUB.L D3, D2 MULS D1, D2. #5, MOVE.L D2, Z Z stor e D2 + 5 D1 * D2 ADD.L #5, D2 + D2 D0 D1 D2 D3 load load load load A B C D Chiamate di funzioni Il tile associato ad una chiamata di funzione (passaggio via record di attivazione) Dc funzione(x,y,z) Da Db Dc MOVE.L Dc, -(A7) MOVE.L Db, -(A7) MOVE.L Da, -(A7) BSR Funzione ADDA #8, A7 MOVE.L (A7)+, Dc 28

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

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

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

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

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

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

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 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

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

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

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami 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

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

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

Dettagli

Alcuni programmi assembly MC68000

Alcuni programmi assembly MC68000 Corso di Calcolatori Elettronici I Alcuni programmi assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

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

Istruzioni di controllo del flusso

Istruzioni di controllo del flusso Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal

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

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

Fetch Decode Execute Program Counter controllare esegue prossima

Fetch Decode Execute Program Counter controllare esegue prossima Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo

Dettagli

Architetture dei Calcolatori

Architetture dei Calcolatori Architetture dei Calcolatori Lezione 8 -- 01/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Create da: F. Lo Presti Modificate da: E.Casalicchio Le procedure q In ogni linguaggio

Dettagli

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio 15 April 2011 05 LABORATORIO 04 PROCEDURE STACK CHIAMATA A PROCEDURE I. Frosio 1 SOMMARIO Procedure Stack Chiamata a procedure 2 PERCHÈ LE PROCEDURE? 15 April 2011 Main Proc3 Proc2 Proc1 Programmazione

Dettagli

Corso di Architettura (Prof. Scarano) 10/05/2002

Corso di Architettura (Prof. Scarano) 10/05/2002 Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di

Dettagli

Introduzione a ISA. Il Livello ISA Instruction Set Level Architecture. Livello ISA e Motorola 68000: introduzione. Che cosa descrive ISA

Introduzione a ISA. Il Livello ISA Instruction Set Level Architecture. Livello ISA e Motorola 68000: introduzione. Che cosa descrive ISA Introduzione a ISA Il Livello ISA Instruction Set Level Architecture Livello ISA e Motorola 68000: introduzione Livello ISA (Instruction Level Architecture): insieme delle istruzioni (instruction set)

Dettagli

Corso di Calcolatori Elettronici I A.A

Corso di Calcolatori Elettronici I A.A Corso di Calcolatori Elettronici I A.A. 2010-2011 Subroutines Lezioni 29-31 Procedure Ø Definizione:» Procedura o subroutine - Particolare sequenza di istruzioni su dati di volta in volta differenti Ø

Dettagli

Introduzione al linguaggio assembly MC68000

Introduzione al linguaggio assembly MC68000 Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello

Dettagli

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010. Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:

Dettagli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I) Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo

Dettagli

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I Le procedure ricorsive Come eseguire un programma Architettura degli Elaboratori e delle Reti, Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:

Dettagli

ARM: stack e subroutine

ARM: stack e subroutine ARM: stack e subroutine 05.d Le istruzioni di accesso allo stack L istruzione di chiamata a subroutine Gestione degli stack frame Istruzione di store multiplo (STM Le istruzioni LDR e STR operano su parole

Dettagli

Assembly IV Le procedure

Assembly IV Le procedure rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:

Dettagli

Introduzione al linguaggio macchina

Introduzione al linguaggio macchina Introduzione al linguaggio macchina Fondamenti di Informatica Come è fatto il linguaggio macchina? Progettare il linguaggio macchina q Il linguaggio macchina è un linguaggio di basso livello che viene

Dettagli

Convenzioni di chiamata a procedure

Convenzioni di chiamata a procedure Università degli Studi di Milano Laboratorio di Architettura degli Elaboratori II Corso di Laurea in Informatica, A.A. 2016-2017 Convenzioni di chiamata a procedure Nicola Basilico Dipartimento di Informatica

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Chiamata a procedura PH cap. 2.7 e app. A.6 1 Chiamata a procedura in C int prod (int x, int y) { int out; out = x * y; return out; } f = f + 1; if (f == g) res = prod(f,g); else

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Assemblatore, Linker e Loader Francesco Lo Presti rielaborate da Salvatore Tucci Assembler, Linker & Loader 1 Compilazione q Nella prima fase, il programma ad alto livello viene

Dettagli

Programmazione Assembly. RISC e CISC Esecuzione sequenziale Esecuzione condizionata Cicli Subroutine

Programmazione Assembly. RISC e CISC Esecuzione sequenziale Esecuzione condizionata Cicli Subroutine Programmazione Assembly RISC e CISC Esecuzione sequenziale Esecuzione condizionata Cicli Subroutine RISC e CISC Possiamo classificare le architetture di microprocessore in due classi principali RISC CISC

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

Architettura degli elaboratori

Architettura degli elaboratori Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori Programmazione in assembly MIPS Marco Tarini Dipartimento di Scienze Teoriche e Applicate

Dettagli

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica Calcolatori Elettronici Prof. Fabio Roli Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto

Dettagli

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Istruzioni di selezione Linguaggio ad alto livello Assembler

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Il linguaggio Assembly

Il linguaggio Assembly Il linguaggio Assembly Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio Assembly

Dettagli

Dal linguaggio macchina al linguaggio C

Dal linguaggio macchina al linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Dal linguaggio macchina al linguaggio C Programma sorgente, compilatore, file oggetto, file eseguibile programma sorgente

Dettagli

Introduzione al linguaggio assembly

Introduzione al linguaggio assembly Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Riepilogo PC R 0 MA R 1 R 2 R 3 IR MB read memoria O 1 O 2 op ALU

Dettagli

Gestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma

Gestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma CALL sottoprogramma RETURN Subroutine linkage CALL: viene salvato l indirizzo di

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7

Dettagli

ACSO Architettura dei Calcolatori e Sistemi Operativi

ACSO Architettura dei Calcolatori e Sistemi Operativi Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof.ssa Cristina Silvano ACSO Architettura

Dettagli

Università degli Studi di Roma La Sapienza

Università degli Studi di Roma La Sapienza Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Introduzione ai concetti ed al simulatore SPIM Indice degli argomenti Introduzione Assembler, compilatore, linker, programma

Dettagli

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di Gestione dei sottoprogrammi Anno Accademico 2007/2008 Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma programma

Dettagli

Istruzioni assembler Istruzione N Registri

Istruzioni assembler Istruzione N Registri Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini [http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 09: - Modi di indirizzamento del MIPS

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione

Dettagli

Istruzioni di trasferimento. Vittorio Zaccaria Dicembre 2009

Istruzioni di trasferimento. Vittorio Zaccaria Dicembre 2009 Istruzioni di trasferimento Trasferimento Move Copia src in dest. Aggiorna bit di esito (N,Z) nel CCR: MOVE src, dest Copia src in dest (no A7). NON aggiorna bit di esito nel CCR: MOVEA src, dest Uso della

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Università degli Studi di Cassino e del Lazio Meridionale

Università degli Studi di Cassino e del Lazio Meridionale di Cassino e del Lazio Meridionale Corso di Gestione dei sottoprogrammi Anno Accademico Francesco Tortorella Gestione dei sottoprogrammi temporaneo passaggio del controllo dal programma in esecuzione ad

Dettagli

Compilatore (Compiler)

Compilatore (Compiler) Compilatore (Compiler) Input: codice in HLL Output: Codice assembly Codice oggetto Fasi di analisi Analisi lessicale Analisi sintattica Analisi semantica Criteri di Ottimizzazione spaziale temporale Assemblatore

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Strutture dati nel supporto a run time

Strutture dati nel supporto a run time Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle

Dettagli

Istruzioni e linguaggio macchina

Istruzioni e linguaggio macchina Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare

Dettagli

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento Architetture degli Elaboratori e delle Reti Lezione 17 Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità

Dettagli

Linguaggi e moduli. Dott. Franco Liberati

Linguaggi e moduli. Dott. Franco Liberati (canale A-D) A Linguaggi e moduli Dott. Franco Liberati Linguaggi di programmazione Compilatore Assemblatore Linker (collegatore) LINKER COMPILATORE ASSEMBLATORE LINGUAGGI DI PROGRAMMAZIONE Linguaggio

Dettagli

Corso di Calcolatori Elettronici I Sottoprogrammi ing. Alessandro Cilardo

Corso di Calcolatori Elettronici I Sottoprogrammi ing. Alessandro Cilardo Corso di Calcolatori Elettronici I Sottoprogrammi ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Sottoprogrammi E utile e spesso necessario scomporre i programmi in sottoprogrammi Sottoprogramma

Dettagli

AXO Architettura dei Calcolatori e Sistemi Operativi

AXO Architettura dei Calcolatori e Sistemi Operativi Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Giuseppe Pelagatti prof.ssa Donatella Sciuto prof.ssa Cristina Silvano AXO Architettura

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 Prof. Rosario Cerbone rosario.cerbone@libero.it http://digilander.libero.it/rosario.cerbone a.a. 2005-2006 L'INDIRIZZAMENTO NEL PROCESSORE MC 68000

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Assembly MIPS: le procedure

Assembly MIPS: le procedure Architettura degli Elaboratori e delle Reti Assembly MIPS: le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1/40 Chiamata a procedura: esempio

Dettagli

Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa.

Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. Il Modello di un Compilatore La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. La complessità dipende dal linguaggio sorgente. Compilatore: traduce

Dettagli

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base

Dettagli

/ sezione dichiarativa variabili globali / #define N 10 int vett [N];

/ sezione dichiarativa variabili globali / #define N 10 int vett [N]; esercizio linguaggio macchina esame 9 luglio 2015 prima parte traduzione in assembler Si deve tradurre in linguaggio macchina simbolico (linguaggio assemblatore) MIPS il frammento di programma C riportato

Dettagli

Manualino minimale MIPS

Manualino minimale MIPS Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Manualino minimale MIPS Marco Tarini Operazioni aritmetiche Nome Comando completo Esempio Sintassi (es) Significato Semantica

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Il linguaggio macchina

Il linguaggio macchina Il linguaggio macchina Un istruzione in linguaggio macchina è, sul piano astratto, una tripla strutturata: i = (f, P1, P2) ove: f F insieme dei codici operativi del processore, cioè delle operazioni elementari

Dettagli

Lezione 17 Il Set di Istruzioni (3)

Lezione 17 Il Set di Istruzioni (3) Lezione 17 Il Set di Istruzioni (3) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Un richiamo su: Operazioni aritmetiche (add

Dettagli

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I Il linguaggio Assembly Architettura degli Elaboratori e delle Reti Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it 1 Linguaggio

Dettagli

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio

Dettagli

AXO Architettura dei Calcolatori e Sistemi Operativi

AXO Architettura dei Calcolatori e Sistemi Operativi Politecnico di Milano Dipartimento di Elettronica e Informazione prof.ssa Anna Antola prof. Luca Breveglieri prof. Giuseppe Pelagatti prof.ssa prof.ssa prof. Donatella Sciuto Cristina Silvano Roberto Negrini

Dettagli

Il linguaggio macchina

Il linguaggio macchina Università degli Studi di Palermo Facoltà di Ingegneria Il linguaggio macchina Edoardo Ardizzone & Ignazio Infantino Appunti per il corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Informatica

Dettagli

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio

Dettagli

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di Assemblatori, Linker Loader Anno Accademico 2007/2008 Francesco Tortorella Dal produttore all esecutore Prima di essere eseguito, un programma attraversa le seguenti fasi: Traduzione Compilazione

Dettagli

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I Modi di indirizzamento del processore MC68000 (parte prima) Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea

Dettagli

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET: Università degli Studi di Milano Corso Architettura degli elaboratori e delle reti Prof. Cristina Silvano A.A. 2004/2005 Esame scritto del 15 luglio 2005 Cognome: Matricola: Nome: Istruzioni Scrivere solo

Dettagli

Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa.

Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. Il Modello di un Compilatore Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. La complessità

Dettagli

Linguaggi di Programmazione Corso C. Parte n.10 Gestione della Memoria. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.10 Gestione della Memoria. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.10 Gestione della Memoria Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Gestione della Memoria I moderni linguaggi

Dettagli

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario La struttura delle istruzioni elementari: il linguaggio Macchina Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano Riferimento sul

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni

Dettagli