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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

2 RISC e CISC Possiamo classificare le architetture di microprocessore in due classi principali RISC CISC RISC: Reduced Instruction Set Computer Architettura semplice Poche istruzioni semplici Molti registri Operazioni aritmetiche e logiche solo sui registri (architettura load/store) CICS: Complex Instruction Set Computer Architettura complessa Molte istruzioni complesse Pochi registri Operazioni aritmetiche e logiche direttamente da memoria

3 Esecuzione sequenziale Consideriamo un primo semplice esempio Calcola la somma di due valori costanti Codice C #define A 10 #define B 20 int C; C = A + B; Codice assembly A EQU 10 B EQU 20 C DATAWORD 0 L0 MOVE, A MOVE, B ADD, STORE C, END L0 A lato è riportato il programma in memoria Viene riservata memoria solo per C C 0 L0 MOVE, A MOVE, B ADD, STORE C, 0x100 0x104 0x108 0x10C 0x110 0x114 0x118 0x11C 0x124 0x128 0x12C 0x130 0x134 0x138 0x13C 0x140 0x144 0x148 0x14C 0x150 0x154 0x158 0x15C 0x160 0x164 0x168 0x16C

4 Esecuzione sequenziale Il programma assembly visto si riferisce ad una architettura RISC I dati vengono caricati nei registri Si esegue l'operazione Il risultato è in un registro Il valore registro viene salvato in memoria Nel caso di una architettura CISC L'operazione di somma avviene direrttamente tra un registro ed una costante A EQU 10 B EQU 20 C DATAWORD 0 L0 MOVE, A ADD, B STORE C, END L0 C 0 L0 MOVE, A ADD, B STORE C, 0x100 0x104 0x108 0x10C 0x110 0x114 0x118 0x11C 0x124 0x128 0x12C 0x130 0x134 0x138 0x13C 0x140 0x144 0x148 0x14C 0x150 0x154 0x158 0x15C 0x160 0x164 0x168 0x16C

5 Esecuzione sequenziale Consideriamo la somma di due locazioni di memoria Assegnamento esplicito degli indirizzi Dei dati Del codice Riserviamo memoria per le variabili mediante le opportune direttive del linguaggio assembly Iniziamo dalla versione RISC Le operazioni avvengono solo sui registri ORIGIN A DATAWORD 111 B DATAWORD 222 C DATAWORD 0 ORIGIN 0x140 L0 LOAD, A LOAD, B ADD, STORE C, END L0 A 111 B 222 C 0 L0 LOAD, A LOAD, B ADD, STORE C, 0x100 0x104 0x108 0x10C 0x110 0x114 0x118 0x11C 0x124 0x128 0x12C 0x130 0x134 0x138 0x13C 0x140 0x144 0x148 0x14C 0x150 0x154 0x158 0x15C 0x160 0x164 0x168 0x16C

6 Esecuzione sequenziale Lo stesso programma per una architettura CISC Un solo operando in memoria ORIGIN A DATAWORD 111 B DATAWORD 222 C DATAWORD 0 ORIGIN 0x140 L0 LOAD, A ADD, B STORE C, END L0 Due operandi in memoria(istruzioni a 3 operandi) ORIGIN A DATAWORD 111 B DATAWORD 222 C DATAWORD 0 ORIGIN 0x140 L0 ADD C, A, B END L0

7 Esecuzione condizionale Consideriamo un semplice costrutto condizionale if( 2 * X > 10 ) Y = 1; else Y = 0; Z = Y + 3; Analizziamone la struttura in termini di percorsi di esecuzione possibili Ne consegue che sono necessarie due etichette if( 2 * X > 10 ) TRUE Y = 1; FALSE Y = 0; L1 Fall-through L2 Z = Y + 3;

8 Esecuzione condizionale Il codice assembly che ne risulta è il seguente ORIGIN X DATAWORD 10 Y DATAWORD 0 Z DATAWORD 0 ORIGIN 0x140 L0 LOAD, X! Calculates the test esxpression X*2-10 MUL, #2 SUB, #10! If condition BLE L1! Then-branch STORE Y, #1 B L2! Else-branch L1 STORE Y, #0! After the if-then-else construct L2 LOAD, Y ADD, #3 STORE Z, END L0

9 Cicli Inizializzazione di un array a valori costanti Mediante direttive assembly ORIGIN V0 DATAWORD 0 V1 DATAWORD 1 V63 DATAWORD 63 ORIGIN 0x400 L0 Mediante un ciclo ORIGIN V RESERVE 256 ORIGIN 0x400 L0 LOAD, V LOAD, 0 L1 STORE (), ADD, #4 ADD, #1 CMP, #63 BL L1 0x100 0x104 0x108 0x10C 0x110 0x114 0x118 0x11C V0??? V1??? 0x124 0x128 V63??? 0x21C 0x220 L0 0x400 0x404 0x408 0x40C 0x410 0x414 0x418 0x41C 0x420 0x424 0x428 0x42C

10 Cicli Modalità di indirizzamento con auto incremento Il registro contiene l'indirizzo del dato L0 LOAD, V LOAD, 0 STORE ()+, ADD, #1 CMP, #63 BL L0 Riempimento al rovescio per evitare il confronto esplicito con valore 63 L'istruzione ADD aggiuntiva viene eseguita una sola volta! punta al primo elemento dopo l'array poiché l'autodecremento avviene prima di usare il dato L0 LOAD, V ADD, #256 LOAD, 64 STORE -(), SUB, #1 BGE L0

11 Subroutine L'utilizzo di subroutine comporta alcune difficoltà Come salvare l'indirizzo a cui ritornare dopo la fine della subroutine? Come passare i parametri? Come allocare spazio per le variabili locali della subroutine? Come passare il valore di ritorno? Come lasciare invariato il valore dei registri nel chiamante a cavallo della subroutine? Ci sono molti modi per affrontare questi problemi, che dipendono da Alcuni aspetti del linguaggio sorgente Scope statico o dinamico, nesting, Alcuni aspetti del lingauggio assembly Salvataggio automatico del program counter, salvataggio dei registri, Il tipo di microprocessore Disponibilità di registri speciali, convenzioni di chiamata, Le scelte del programmatore Oppure dello sviluppatore di compilatori

12 Subroutine: Indirizzo di ritorno La funzione chiamata deve ritornare in punti diversi a seconda del chiamante E' necessario salvare l'indirizzo al quale si è verificata la chiamata E' equivalente, ma si preferisce salvare l'indirizzo successivo alla chiamata E' esattamente il punto da cui deve riprendere l'esecuzione 0x100 0x104 STORE X, 0x108 CALL FOO 0x10C MOVE, 0x110 0x114 0x118 ritorno chiamata 0x400 FOO 0x404 0x408 0x40C 0x410 0x414 RET 0x418 0x41C Non è possibile salvare l'indirizzo in un registro Chiamate annidate dovrebbero usare registri diversi Non è possibile poiché il chiamato deve sempre sapere quale registro si sta usando E' necessario ricorrere allo stack Il chiamante pone l'indirizzo di ritorno sullo stack Il chiamato usa tale indirizzo per passare il controllo al punto corretto

13 Subroutine: Indirizzo di ritorno Consideriamo le chiamate annidate e analizziamo lo stack MAIN chiama FOO che chiama BAR MAIN 0x100 0x CALL FOO 0x108 0x10C 0x x10C (in MAIN) 0x114 0x118 0x11C 2 5 BAR 0x x128 RET 0x21C 0x10C (in MAIN) 0x220 0x400 0x404 0x408 FOO 0x40C CALL BAR 0x410 0x414 RET 0x x414 (in FOO) 0x10C (in MAIN) 0x41C 0x420

14 Subroutine: Indirizzo di ritorno Secondo questo schema dunque L'istruzione "CALL addr" equivale alla sequenza: MOVE, PC ADD, #8 B addr Si noti che quando PC viene copiato in, esso punta all'istruzione ADD Quindi PC+4 punta all'istruzione di salto E infine PC+8 punta alla prima istruzione dopo la "CALL" L'istruzione "RET" equaivale alla sequenza POP MOVE PC, Si noti che l'istruzione MOVE PC, è equivalente ad un salto Infatti il suo risultato è quello di modificare il program counter Nella maggior parte dei processori le istruzioni CALL e RET hanno questo effetto La rappresentazione assembly "equivalente" è solo indicativa

15 Subroutine: Passaggio dei parametri Il passaggio dei parametri alle subroutine può avvenire in modi diversi Nei registri Sullo stack Passaggio dei parametri nei registri Molto semplice e veloce Dato che alcuni registri sono usati per i parametri, il chiamante deve salvare i registri prima di entrare in una subroutine Il numero di registri è spesso piuttosto limitato Si possono passare per valore solo pochi parametri di piccole dimensioni Per parametri di grandi dimansioni si ricorre al passaggio per indirizzo Passaggio dei parametri sullo stack Più lento, in quanto richiede accesso alla memoria Molto generale Non presenta limitazioni riguardo al numero e dimensione dei parametri

16 Subroutine: Passaggio dei parametri nei registri Passaggio mediante registri Sum = AddInt( 10, 20 ); int AddInt( int a, int b ) { return a + b; } La sequenza di chiamata richiede che Nel chiamante Si salvino i registri prima della chiamata e si recuperi il loro valore al ritorno Si copino 10 e 20 i parametri nei registri ed Nel chiamato Si copi il valore di ritono in STORE T0, STORE T1, MOVE, #10 MOVE, #20 CALL AddInt STORE Sum, LOAD, T0 LOAD, T1 AddInt ADD, RET

17 Subroutine: Passaggio dei parametri sullo stack E' necessario impialre i parametri prima della chiamata Per l'esempio appena visto, lo stack appena dopo la chiamata è: SP: indirizzo di ritorno Quindi i parametri si trovano al di sotto della cima dello stack Il chiamato accede ai parametri mediante indirizzamento con indice e spiazzamento Rispetto allo stack pointer Con spiazzamento positivo (la freccia rossa in figura indica gli indirizzi crescenti) Il chiamato pone quindi il risultato sullo stack Questa soluzione è scorretta poiché sulla cima dello stack non c'è lindirizzo di ritorno SP: valore di ritorno indirizzo di ritorno

18 Subroutine: Passaggio dei parametri sullo stack Il valore di ritono deve essere salvato altrove Nello stack, al posto di uno dei parametri Si accede a tale locazione mediante spiazzamento rispetto allo stack pointer La subroutine conosce la posizione del primo parametro (Stack pointer) + (Dimensione indirizzo di ritorno) + (Dimensione parametri) SP: indirizzo di ritorno valore di ritorno I parametri possono essere sovrascritti La loro "vita" termina alla fine della subroutine Se il valore di ritorno ha dimensioni maggiori dei parametri Questo approccio richiede un'estensione In genere si riserva esplicitamente dello spazio sullo stack per il valore di ritorno In questo contestto tratteremo solo il caso di parametri e valori si ritorno di piccole dimensioni

19 Subroutine: Passaggio dei parametri sullo stack Al ritorno nel chiamante L'istruzione RET del chiamato ha tolto l'indirizzo di ritorno dallo stack che quindi é: SP valore di ritorno Il chiamante Conosce la posizione sullo stack del valore di ritorno sullo (Stack pointer) + (Dimensione dei parametri) Preleva il valore per indirizzamento indiretto rispetto allo stack pointer Riposiziona lo stack pointer alla posizione che aveva prima della chiamata Sullo stack sono state eseguite istruzioni PUSH per impilare i parametri Nessuna corrispondente istruzione di POP è stata invece eseguita Il riposizionamento avviene modificando in modo esplicito lo stack pointer

20 Subroutine: Passaggio dei parametri nei registri Passaggio mediante stack PUSH #10 PUSH #20 CALL AddInt LOAD, 4(SP) STORE Sum, ADD SP, #4 AddInt LOAD, 8(SP) LOAD, 4(SP) ADD, STORE 8(SP), RET Si nota che la subroutine utilizza i registi I valori che tali registri avevano nel chiamante vanno perduti E' necessario salvare i registri esplicitamente Anche in questo caso si utilizza lo stack In genere è il chiamato Ad eseguire il salvataggio appena ne inizia l'esecuzione Ad eseguire il ripristino prima di ritornare al chiamante

21 Subroutine: Passaggio dei parametri sullo stack Supponendo di avere solamente 4 registri Lo stato dello stack appena dopo la chiamata è SP Il chiamato salva i registri Lo stato dello stack prima di iniziare il "corpo" della subroutine è SP

22 Subroutine: Passaggio dei parametri nei registri La sequenza di chiamata diviene dunque Il chimante non cambia Il chiamato si occupa si gestire lo stack per il salvataggio dei registri Si noti che sono cambiati gli offset dei parametri PUSH #10 PUSH #20 CALL AddInt LOAD, 8(SP) STORE Sum, ADD SP, #4 AddInt PUSH PUSH PUSH PUSH LOAD, 20(SP) LOAD, 16(SP) ADD, STORE 20(SP), POP POP POP POP RET

23 Subroutine: Variabili locali Non è necessario riservare permanentemente la memoria per tutte la variabili locali delle diverse subroutine Tali variabili "vivono" solo per il tempo in cui la funzione è attiva Per rendere le variabili locali Si riserva spazio dinamicamente sullo stack Si tratta di decidere in quale posizione allocare le variabili In altre parole quando spostare lo stack pointer Per convenzione Molto spesso tali variabili vengono allocate tra l'indirizzo di rientro e i registri salvati Tale scelta non è l'unica possibile

24 Subroutine: Variabili locali Consideriamo una versione leggermente diversa della routine di somma int AddInt( int a, int b ) { int c; c = a + b return c; } Il chiamato diviene dunque: AddInt ADD SP, #-4 PUSH PUSH PUSH PUSH LOAD, 24(SP) LOAD, 20(SP) ADD, STORE 24(SP), POP POP POP POP ADD SP, #4 RET

25 Subroutine: Variabili locali Lo stato dello stack durante l'esecuzione del chiamato è dunque il seguente??? SP Spazio riservato per la variabile locale "c" Anche questa modifica alla sequenza di chiamata Modifica gli offset per accedere ai parametri

26 Subroutine: Area di attivazione Come visto, lo stack contiene molti dati di tipo diverso Parametri e valore di ritorno, indirizzo di ritorno, variabili locali, registri salvati Nel caso più generale è necessario disporre di un nuovo registro speciale Il frame pointer L'area dello stack relativa ad una subroutine è detta "area di attivazione" Anche detta "stack frame" o "activation record" La sua struttura generale è la seguente Registri salvati Variabili locali Frame pointer del chiamante Indirizzo di ritorno Parametri e valore di ritorno del chiamante SP

27 Subroutine: Area di attivazione Il frame pointer o FP Punta ad una posizione specifica all'interno dello stack In particolare, punta alla posizione in cui è stato salvato il frame pointer del chiamante In questo modo è possibile ripristinare il suo valore al ritorno da una funzione Questa tecnica implementa lo "static linking" tra gli stack frame Lo stack è dunque Registri salvati Variabili locali Frame pointer del chiamante Indirizzo di ritorno Parametri e valore di ritorno del chiamante SP FP + offset FP FP offset Pertanto si accede mediante FP Alle variabil locali, con un'offset negativo Ai parametri e al valore di ritorno, mediante un'offset positivo

28 Subroutine: Area di attivazione Vediamo ora nel dettaglio come cambia lo stack Funzione chiamante void Dummy() { int y; y = AddInt( 10, 20 ); } Funazione chiamata int AddInt( int a, int b ) { int c; c = a + b return c; }

29 Subroutine: Esempio completo Prima di iniziare la sequenza di chiamata della funzione AddInt() Dummy PUSH #10 PUSH #20 CALL AddInt LOAD, 4(SP)! ADD SP, #8 STORE 4(FP), Si noti che Il frame pointer salvato (0x804) punta alla posizione in cui è stato salvato il frame piointer della funzione chiamante di AddInt() 0x804 y SP FP di Dummy()

30 Subroutine: Esempio completo Immediatamente dopo la chiamata della funzione AddInt() Dummy PUSH #10 PUSH #20 CALL AddInt LOAD, 4(SP)! ADD SP, #8 STORE 4(FP), Si noti che Sono stati impilati i parametri L'istruzione CALL ha impilato l'indirizzo di ritorno in Dummy() x804 y 0x068 SP FP di AddInt() di Dummy()

31 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Si pone sullo stack il frame pointer corrente 0x x804 y 0x068 SP FP di AddInt() di Dummy() Si crea dunque il link statico con lo stack frame del chiamante

32 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Il frame pointer viene fatto puntare al valore corrente dello stack pointer 0x x804 y 0x068 SP FP di AddInt() di Dummy()

33 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Viene spostato lo stack pointer per Tenere conto del frame pointer salvato Riservare lo spazio per la variabile locale "c"??? (c) 0x x804 y 0x068 SP FP di AddInt() di Dummy()

34 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Vengono salvari i registri??? (c) 0x x804 y 0x068 SP FP di AddInt() di Dummy() Il valore dei registri è quello che essi hanno nella funzione chiamante Dummy()

35 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Carica in il primo parametro??? (c) 0x x804 y 0x068 SP FP di AddInt() di Dummy()

36 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Somma ad il secondo parametro??? (c) 0x x804 y 0x068 SP FP di AddInt() di Dummy() Il risultato è in

37 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Salva il risultato della somma nella variabile locale "c" di AddInt() 30 0x x804 y 0x068 SP FP di AddInt() di Dummy()

38 Subroutine: Esempio completo Nella funzione AddInt() AddInt PUSH FP MOVE FP, SP ADD SP, #-4 PUSH PUSH PUSH PUSH MOVE, 12(FP) ADD, 8(FP) STORE -4(FP), LOAD, -4(FP) STORE 12(FP), Si noti che Sposta il risultato dalla variabile locale "c" nella posizione adatta al valore di ritorno 30 0x x804 y 0x068 SP FP di AddInt() di Dummy()

39 Subroutine: Esempio completo Nella funzione AddInt() AddInt LOAD, -4(FP) STORE 12(FP), POP POP POP POP ADD SP, #4 POP FP RET Si noti che Recupera il valore dei registri salvati 30 0x x804 y 0x068 SP FP di AddInt() di Dummy()

40 Subroutine: Esempio completo Nella funzione AddInt() AddInt LOAD, -4(FP) STORE 12(FP), POP POP POP POP ADD SP, #4 POP FP RET Si noti che Rilascia lo spazio allocato per le variabili locali spostando esplicitamente lo stack pointer 0x x804 y 0x068 FP SP di AddInt() di Dummy()

41 Subroutine: Esempio completo Nella funzione AddInt() AddInt LOAD, -4(FP) STORE 12(FP), POP POP POP POP ADD SP, #4 POP FP RET Si noti che Recupera il frame pointer del chiamante x804 y 0x068 SP FP di AddInt() di Dummy() In questo modo il frame attivo è quello del chiamante

42 Subroutine: Esempio completo Nella funzione AddInt() AddInt LOAD, -4(FP) STORE 12(FP), POP POP POP POP ADD SP, #4 POP FP RET Si noti che Ritorna al chiamante rimuovendo l'indirizzo di ritorno dallo stack x804 y 0x068 SP FP di AddInt() di Dummy()

43 Subroutine: Esempio completo Immediatamente dopo la chiamata della funzione AddInt() Dummy PUSH #10 PUSH #20 CALL AddInt LOAD, 4(SP) ADD SP, #8 STORE 4(FP), Si noti che Recupera il valore di ritono e lo salva in x804 y 0x068 SP FP di AddInt() di Dummy()

44 Subroutine: Esempio completo Immediatamente dopo la chiamata della funzione AddInt() Dummy PUSH #10 PUSH #20 CALL AddInt LOAD, 4(SP) ADD SP, #8 STORE 4(FP), Si noti che Rilascia lo spazio allocato per il passaggio dei parametri spostando esplicitamente lo stack pointer 0x804 y 0x068 SP FP di Dummy()

45 Subroutine: Esempio completo Immediatamente dopo la chiamata della funzione AddInt() Dummy PUSH #10 PUSH #20 CALL AddInt LOAD, 4(SP) ADD SP, #8 STORE 4(FP), Si noti che Salva il valore di ritorno copiandolo da alla posizione della variabile locale "y" L'accesso avviene mediante il frame pointer dello stack frame correntemente attivo 0x x068 SP FP di Dummy()

46 Subroutine: Schema chiamante/chiamato In generale dunque Chiamante e chiamato si dividono il compito di costruire e distruggere lo stack frame La figura mostra i compiti svolti da ognuno di essi Chiamante Chiamato Prologue Prologue Salva FP corrente Aggiorna FP Alloca variabili locali Push registri Push parametri Pre-call Push indirizzo di ritorno CALL Recupera valore di ritorno Rimuove i parametri Post-call Epilogue Pop registri Dealloca variabili locali Recupera FP salvato RET Pop indirizzo di ritorno Epilogue

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Convenzioni per la chiamata a procedure

Convenzioni per la chiamata a procedure Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Convenzioni per la chiamata a procedure Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico

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

MECCANISMI PER IL PASSAGGIO DEI PARAMETRI

MECCANISMI PER IL PASSAGGIO DEI PARAMETRI MECCANISMI PER IL PASSAGGIO DEI PARAMETRI CALCOLATORI ELETTRONICI I CdL Ingegneria Elettronica (A-I) DIS - Università degli Studi di Napoli Federico II Parametri in registri Realizzare un programma che

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

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

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

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

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

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

Macchina di Riferimento: argomenti

Macchina di Riferimento: argomenti Macchina di Riferimento: argomenti L'architettura di una macchina MIPS Organizzazione della memoria I registri della CPU L'esecuzione dei programmi Il ciclo fetch-execute Il simulatore SPIM 1 Architettura

Dettagli

Gestione dello Stack nel MIPS

Gestione dello Stack nel MIPS Gestione dello Stack nel MIPS Lo stack cresce da indirizzi di memoria alti verso indirizzi di memoria bassi ad es. sp-> 0x7fffffff 0x7ffffdfc riservata stack L inserimento di un dato nello stack (operazione

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

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

Corso di. Stack: Procedure e variabili locali. Architetture degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione

Corso di. Stack: Procedure e variabili locali. Architetture degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione Corso di Architettura degli Elaboratori Il livello della microarchitettura: l'isa IJVM Stack: Procedure e variabili locali ambiente di esecuzione procedura A variabili locali di A variabili locali di B

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

Modi di indirizzamento

Modi di indirizzamento Architettura degli elaboratori Modi di indirizzamento ARGOMENTI DELLA LEZIONE Definizione Indirizzamenti diretti: immediato, assoluto, a registro Indirizzamenti indiretti: indiretto con registro, con spiazzamento,

Dettagli

Fondamenti di Informatica B

Fondamenti di Informatica B Fondamenti di Informatica B Lezione n. 11 Alberto Broggi Gianni Conte A.A. 2005-2006 Fondamenti di Informatica B Lezione n.11n ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO

Dettagli

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo

Programmazione C. Funzioni e procedure: Activation record. passaggio per indirizzo Programmazione C Funzioni e procedure: passaggio per indirizzo Activation record 2. PASSAGGIO PER INDIRIZZO Dire alla funzione l indirizzo di memoria cui accedere Se occorre passare un array ad una funzione,

Dettagli

Introduzione al linguaggio macchina. Istruzione l/m

Introduzione al linguaggio macchina. Istruzione l/m Corso di Calcolatori Elettronici I Introduzione al linguaggio macchina Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione

Dettagli

Introduzione. Architettura

Introduzione. Architettura Introduzione Questo simulatore fornisce una versione semplificata dell assemblatore sfruttato dal processore 8088 trasformando il codice inserito in input in codice eseguibile e ne simula l esecuzione

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

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

Introduzione al linguaggio macchina

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

Dettagli

Procedure e variabili locali. Corso di Architettura degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione

Procedure e variabili locali. Corso di Architettura degli Elaboratori. Uno stack anche per i calcoli. Lo stack di esecuzione Corso di Architettura degli Elaboratori Il livello della microarchitettura: l'isa IJVM Dipartimento di Informatica Università degli Studi di Torino C.so Svizzera, 85 I-04 Torino baldoni@di.unito.it http://www.di.unito.it/

Dettagli

20. Gestione della memoria. Andrea Marongiu Paolo Valente

20. Gestione della memoria. Andrea Marongiu Paolo Valente 20. Gestione della memoria Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente Classi di memorizzazione Stiamo per vedere la classificazione di un oggetto in funzione del suo tempo di vita In particolare,

Dettagli

Calcolatore: sottosistemi

Calcolatore: sottosistemi Calcolatore: sottosistemi Processore o CPU (Central Processing Unit) Memoria centrale Sottosistema di input/output (I/O) CPU I/O Memoria Calcolatore: organizzazione a bus Il processore o CPU Unità di controllo

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

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 - L'INDIRIZZAMENTO NEL PROCESSORE MC 68000 - PARTE 1 - CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Modi di indirizzamento Tecniche di indirizzamento:

Dettagli

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A *** indicano le affermazioni corrette. 1. Con riferimento alle architetture dei calcolatori ed alla valutazione

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

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA Lezione n.11 n.11 Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di base relativi

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

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

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

Il Linguaggio Assembly

Il Linguaggio Assembly Il Linguaggio Assembly Luca Abeni March 16, 2016 Linguaggio Macchina ed Assembly CPU: capisce (e riesce ad eseguire) solo il suo linguaggio macchina Sequenza di 0 e 1 Non proprio utilissimo per noi umani...

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

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma

Dettagli

La gestione della memoria. Gestione della memoria. Uso della Memoria RAM

La gestione della memoria. Gestione della memoria. Uso della Memoria RAM La gestione della memoria Gestione della memoria Stack di attivazione, Heap Come il compilatore-interprete, organizza i dati necessari all esecuzione del programma. Alcuni aspetti organizzativi già visti

Dettagli

Gestione della memoria

Gestione della memoria Gestione della memoria Stack di attivazione, Heap Stack di attivazione, Heap Gestione della memoria 1 / 52 La gestione della memoria Come il compilatore-interprete, organizza i dati necessari all esecuzione

Dettagli

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Istruzioni del processore Abbiamo visto in precedenza alcuni esempi di istruzioni

Dettagli

LA CPU INTEL Vantaggi dei programmi Assembly

LA CPU INTEL Vantaggi dei programmi Assembly 1 LA CPU INTEL 8086 Vantaggi dei programmi Assembly L utilizzo del linguaggio Assembly anzichè di un linguaggio ad alto livello (tipo C o Pascal) è talvolta giustificato dalla maggiore efficienza del codice;

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 16. Passaggio di Parametri mediante Aree Dati

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 16. Passaggio di Parametri mediante Aree Dati LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 16 Prof. Rosario Cerbone rosario.cerbone@uniparthenope.it http://digilander.libero.it/rosario.cerbone a.a. 2007-2008 Passaggio di Parametri mediante

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

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

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

L insieme delle istruzioni (6)

L insieme delle istruzioni (6) L insieme delle istruzioni (6) Architetture dei Calcolatori (lettere A-I) Alcune note conclusive I due principi dell architettura a programma memorizzato Uso di istruzioni indistinguibili dai dati Uso

Dettagli

Assembler MIPS 32 Assembly II

Assembler MIPS 32 Assembly II TITLE Assembler MIPS 32 Assembly II Riccardo Solmi 1 Indice degli argomenti Programmazione assembly Definizione e controllo di sottoprogrammi Definizione di funzione Chiamate a funzioni Convenzioni riguardanti

Dettagli

Architettura del set di istruzioni (ISA)

Architettura del set di istruzioni (ISA) Architettura del set di istruzioni (ISA) Calcolatori Elettronici-Ingegneria Telematica 1 Instruction Set Architecture Software Hardware Application (Netscape) Compiler Assembler Processor Memory Digital

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

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12 Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12 vitiello@dia.unisa.it http://www.dia.unisa.it/~avitiello Presentazione Corso di Architettura matricole congruo a 0: prof.

Dettagli

Vari modi di specificare l indirizzo degli operandi

Vari modi di specificare l indirizzo degli operandi Modi di indirizzamento Capitolo 11 Vari modi di specificare l indirizzo degli operandi Immediato Diretto Indiretto Registro Registro indiretto Spiazzamento Pila 1 Indirizzamento immediato L operando è

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 18 Maggio 2012 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference cards: http://refcards.com/docs/waetzigj/mips/mipsref.pdf http://www.mips.com/media/files/md00565-2b-mips32-qrc-01.01.pdf

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Strutture di controllo P.H. cap. 2.6 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Le strutture di controllo Istruzioni di salto if then do...

Dettagli

Addendum: istruzioni linguaggio macchina. Università di Bergamo - corso di Calcolatori Elettronici 1

Addendum: istruzioni linguaggio macchina. Università di Bergamo - corso di Calcolatori Elettronici 1 Addendum: istruzioni linguaggio macchina Università di Bergamo - corso di Calcolatori Elettronici 1 Control Loop C code: L1: g = g + A[i]; i = i + j; if (i!= h) goto L1; MIPS code: L1: add $t1, $s3, $s3

Dettagli

Il linguaggio macchina

Il linguaggio macchina Il linguaggio macchina Istruzioni macchina (PH 2.4) Indirizzamento (PH 2.9) Costanti a 32-bit (PH 2.9) 1 Linguaggio macchina Le istruzioni in linguaggio assembly devono essere tradotte in linguaggio macchina

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

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

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

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC

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

Stack e nidificazione dei sottoprogrammi Cos è un sottoprogramma? La chiamata di un sottoprogramma... 6

Stack e nidificazione dei sottoprogrammi Cos è un sottoprogramma? La chiamata di un sottoprogramma... 6 Stack e nidificazione dei sottoprogrammi... 2 Cos è un sottoprogramma?... 2 La chiamata di un sottoprogramma... 6 Lo stack... 9 Il nesting dei sottoprogrammi.... 12 Lo stack pointer... 17 Stack e nidificazione

Dettagli

Procedure SOMMARIO: DIPARTIMENTO DI INFORMATICA Laboratorio di Architetture degli Elaboratori II Turno B : ( G Z )

Procedure SOMMARIO: DIPARTIMENTO DI INFORMATICA Laboratorio di Architetture degli Elaboratori II Turno B : ( G Z ) UNIVERSITÀ DEGLI STUDI DI MILANO matteo.re@unimi.it https://homes.di.unimi.it/re/arch2-lab-2015-2016.html DIPARTIMENTO DI INFORMATICA Laboratorio di Architetture degli Elaboratori II Turno B : ( G Z )

Dettagli

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO JP pq E un istruzione di salto assoluto incondizionato. Per salto assoluto si intende il fatto che grazie a quest istruzione, il contenuto

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2012-2013 Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Strutture di controllo P.H. cap. 2.6 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Le strutture di controllo Istruzioni di salto if then do...

Dettagli

Architettura degli STACK. Dott. Franco Liberati

Architettura degli STACK. Dott. Franco Liberati Architettura degli Elaboratori Dott. Franco Liberati Argomenti della lezione Approccio pratico in MARS Architettura degli Elaboratori Dott. Franco Liberati Generalità Lo stacko pila indica un tipo di dato

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2010-2011 Architettura di un calcolatore: introduzione Lezione 18 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Architetture dei Calcolatori

Architetture dei Calcolatori Architetture dei Calcolatori Lezione 11 -- 10/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Fattoriale: risparmiamo sull uso dei registri q Rispetto alla soluzione precedente

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 Instruction Set Architecture: nozioni generali Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello del linguaggio specializzato Traduzione (compilatore) o interpretazione

Dettagli

Assembler MIPS 32 Assembly III

Assembler MIPS 32 Assembly III TITLE Assembler MIPS 32 Assembly III Riccardo Solmi 1 Indice degli argomenti Organizzazione della memoria Allineamento dati Allocazione dinamica Programmazione assembly Definizione e gestione di strutture

Dettagli

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A. < < } } Lezione 5 e 6 Accesso a memoria A questo livello di astrazione, la memoria viene vista come un array di byte Per ogni richiesta di un dato ad un certo indirizzo, la CPU ottiene un numero di byte

Dettagli

ESERCITAZIONE Operandi Architettura ad 1 operando Architettura a 2 operandi Architettura a 3 operandi

ESERCITAZIONE Operandi Architettura ad 1 operando Architettura a 2 operandi Architettura a 3 operandi ESERCITAZIONE 9 Sommario Operandi Registri dedicati Gestione di sottoprogrammi Meccanismi di interruzione 1. Operandi Le prestazioni di una CPU possono variare considerevolmente a seconda del numero di

Dettagli

Lezione4: MIPS e Istruzioni (1 Parte)

Lezione4: MIPS e Istruzioni (1 Parte) Architettura degli Elaboratori Lezione4: MIPS e Istruzioni (1 Parte) Michele Nappi mnappi@unisa.it http://www.biplab.unisa.it/ Alcune slide di questa lezione sono prodotte dal Prof. Luigi Palopoli AGENDA

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

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

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

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

Dettagli