La scorsa lezione. Laboratorio di Architettura. passaggio parametri. Riassunto. Lezione 7. Procedure Convenzioni di chiamata Stack

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "La scorsa lezione. Laboratorio di Architettura. passaggio parametri. Riassunto. Lezione 7. Procedure Convenzioni di chiamata Stack"

Transcript

1 La scorsa lezione Laboratorio di Architettura Lezione 7 Andrea Torsello Procedure Convenzioni di chiamata Stack Dipartimento di Informatica Università Ca Foscari di Venezia Riassunto p.1/55 p.2/55 passaggio parametri Chiamata alla procedura B tradotta attraveso jal indirizzodib l indirizzo di ritorno viene scritto in $ra la procedura ritorna con jr $ra I parametri ed i risultati si possono passare in dei registri C è bisogno di un accordo Esiste un convenzione per tutti i sistemi MIPS. p.3/55 p.4/55

2 Convenzioni di chiamata $zero: quando letto dà sempre 0 $at: riservato per l assembler (usato per le pseudoistruzioni) $v0, $v1: risultato di espressioni/funzioni $a0...$a3: primi 4 argomenti di una procedura/funzione $t0...$t7: registri temporanei, il contenuto non spravvive una chiamata di procedura $s0...$s7: registri temporanei salvati, il contenuto spravvive una chiamata di procedura $t8, $t9: altri 2 registri temporanei che non sopravvivono le procedure Convenzioni di chiamata $k0, $k1: riservati per il sistema operativo $gp, $sp, $fp: vedremo più avanti $ra: return address, scritto da jal e usato per ritornare da procedure p.5/55 p.6/55 Problema Nomi Dobbiamo evitare i side-effects dobbiamo salvare i valori prima di chiamare un altra procedura, e poi rimetterli al loro posto Per far questo, abbiamo visto un semplice metodo Ci si sceglie posticino tranquillo per noi, un indirizzo in memoria, gli si dà un nome, e si usa quello come una variabile di salvataggio p.7/55 p.8/55

3 Limitazioni? Problema dei nomi Lo spazio è usato solo quando la funzione viene chiamata Ogni funzione ha dello spazio inutilizzato per la maggior pate del tempo. Funziona sempre? No! (Funzioni ricorsive). Ora i nomi non sono più posti tranquilli e riservati per noi, visto che ci servono per fare cose diverse in situazioni diverse Per cui, salvare in delle variabili fisse non funziona nel caso in cui la procedura chiami se stessa (direttamente o indirettamente) Nomi II p.9/55 p.10/55 Sequenzialità Nomi diversi: hanno la buona proprietà che possiamo fare cose anche parallelamente: ognuno mette i suoi dati in posti diversi Però, noi in questo ambito non abbiamo processi paralleli Le operazioni che facciamo sono sempre sequenziali: prima qualcuno fa qualcosa, poi un altro fa qualcos altro, e cosi via In ogni momento, c è solo un programma attivo p.11/55 p.12/55

4 Dunque... Stack Possiamo sfruttare questo fatto per immagazzinare le nostre variabili: USIAMO UN UNICO POSTO per tutti Un posto che permette di salvare più dati LO STACK È un punto dove noi possiamo mettere e togliere dati Come un mazzo di carte: PUSH (mette una carta in cima al mazzo) POP (toglie la carta in cima al mazzo) Funziona? p.13/55 p.14/55 Perché funziona Per il senso civico Se tutti puliscono dopo che hanno fatto, non si accumula spazzatura e tutto va bene Perché in ogni momento c è solo una sola procedura che mette le carte. E spetta a lei, quando ha finito, togliere le carte che ha messo nel mazzo In questo modo, ognuno quando ha finito lascia le cose esattamente come stavano Come funziona Dobbiamo semplicemente implementare in qualche modo le istruzioni di PUSH (metti) e POP (togli) C è un registro apposito per implementare lo stack: sp (stack pointer, puntatore allo stack) p.15/55 p.16/55

5 PUSH (metti) POP (togli) PUSH(registro) mette un registro sullo stack addi $sp,$sp,-4 # fa spazio sullo stack sw registro,0($sp) # mette il registro nello # stack POP toglie il primo elemento dello stack (e lo mette da qualche parte) lw registro,0($sp) #copia il primo elemento #dello stack nel registro addi $sp,$sp,4 #libera lo stack p.17/55 Interrogativo E allora? p.18/55 Serve veramente la ricorsione?...no! Risultato fondamentale: si può sempre modificare il programma dimodoché non ci sia ricorsione Il problema è lo stesso di Mr. Minimal: a volte è molto più conveniente usare la ricorsione Senza, rischiamo che la soluzione sia molto più complicata da scrivere Inoltre, nei moderni linguaggi di programmazione, la ricorsione è molto facile da scrivere (tocca poi al linguaggio macchina fare il lavoro) p.19/55 p.20/55

6 Attenzione Esercizio A volte la ricorsione è facile da scrivere, ma molto meno efficiente di un calcolo più diretto non ricorsivo Ad esempio, i numeri di Fibonacci... F(9) = F(8) + F(7) = F(7) + F(6) + F(6) + F(5)=... Provate a scrivere un programma più efficiente per calcolare i numeri di Fibonacci che non usi la ricorsione p.21/55 p.22/55 Lo stack Lo stack Lo stack è uno spazio di memoria... privato: ogni chiamata funzione ne ha uno suo e anche se la stessa funzione viene chiamata più volte (ricorsione) questi spazi non collidono dinamico: la dimensione si adatta alle necessità (ne uso di più o di meno a seconda delle necessità) Viene usato per salvare e poi ripristinare i registri che non possono essere modificati ($s0,...,$s7,$a0,...$a3,$ra,...) Chi deve salvare i valori nello stack la procedura chiamante o quella chiamata? chi li cambia! $s0,...,$s7 devono essere salvati dalla procedura chiamata se ha intenzione di usarli La procedura chiamante deve salvare $a0,...$a3 prima di inserirvi gli argomeni e quella chiamata deve salvarli prima di modificarne il contenuto La procedura chiamante deve salvare $ra prima di eseguire la jal!!! p.23/55 p.24/55

7 Uso minimo Esempio procedura chiamante La funzione chiamata non deve salvare nulla se scrive solo nei registri temporanei ($t0,...$t9) in quelli dei risultati ($v0,$v1) in quelli non indirizzabili (Hi,Lo,PC) La funzione chiamante deve comunque salvare $ra i registri argomento usati ($a0,...$a3).data x:.word 5 result:.space 4.text main: # salvo ra e a0 # PUSH($ra) addi $sp,$sp,-4 sw $ra,0($sp) # PUSH($a0) addi $sp,$sp,-4 sw $a0,0($sp) # chiamo la procedura quadrato lw $a0,x jal quadrato sw $v0,result # ripristino ra e a0 # POP($a0) lw $a0,0($sp) addi $sp,$sp,4 # POP($ra) lw $ra,0($sp) addi $sp,$sp,4 jr $ra # return p.25/55 Esempio procedura chiamata p.26/55 salvataggio del chiamante quadrato: mult $a0,$a0 mflo $v0 jr $ra Nella maggior parte dei casi l onere del salvataggio è solo della funzione chiamante La procedura chiamante deve salvare i registri soltanto 1 volta e poi può chiamare quante procedure vuole Se le procedure chiamate dovessero salvare i registri ogni volta si rischierebbe di salvare più volte lo stesso valore p.27/55 p.28/55

8 Salvataggio di più registri Esempio Se una funzione deve salvare più registri, muove $sp tante volte quante sono i registri salvati Ottimizziamo! Posso usare solo una addi $sp,$sp,-4*(numero di registri) # PUSH($ra) addi $sp,$sp,-4 sw $ra,0($sp) # PUSH($a0) addi $sp,$sp,-4 sw $a0,0($sp)...e......diventa... addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp)...e poi scrivo nello slot giusto usando l offset # POP($a0) lw $a0,0($sp) addi $sp,$sp,4 # POP($ra) lw $ra,0($sp) addi $sp,$sp,4...diventa... lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 Scoping p.29/55 p.30/55 Scoping e Linguaggio Macchina In C le variabli possono essere definite dentro alle funzioni (locali) o fuori (globali) Le variabili globali possono essere lette e scitte da tutte le funzioni Quelle locali sono private delle funzioni in cui sono definite Per ora abbiamo visto solo come implementare variabili globali Direttiva.data Come facciamo a implementare le variabili locali? p.31/55 p.32/55

9 Variabili locali Esempio C Il problema è lo stesso che abbiamo visto per creare spazio privato dove salvare i registri Anche la soluzione è la stessa: usare lo Stack le variabili vengono assegnate allo stack e $sp viene spostato di conseguenza In C: int incrementa(int x) { return x+1; } int incrementa2(int x) { int temp=x+1; return incrementa(temp); } p.33/55 Esempio assembly p.34/55 Frame pointer In assembly: incrementa: addi $v0,$a0,1 jr $ra incrementa2: #fa spazio per temp addi $sp,$sp,-4 addi $v0,$a0,1 sw $v0,0($sp) #salvo $ra e $a0 addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) lw $a0,8($sp) #$sp si è mosso! jal incrementa lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 #elimino lo spazio #riservato per temp addi $sp,$sp,4 jr $ra L offset rispetto allo stack pointer cambia a seguito di movimenti dello stack (inserimenti o rimozioni) Per questo è riservato un registro $fp (frame pointer) che punta alla posizione di $sp all inizio della procedura e non cambia. L uso di questo registro è opzionale dovete assegnare voi il valore a $fp all inizio della procedura (dopo averne salvato il valore nello stack) p.35/55 p.36/55

10 Global pointer Global pointer Esiste un atro registro dall uso opzionale: $gp (global pointer) Questo punta nel mezzo dale sezione.data A cosa serve? A ottimizzare le load delle varabili globali Abbiamo visto che per caricare una variabile locale dobiamo: 1. caricare l indirizzo in un registro (lui + addi/ori) 2. caricare il valore: lw dest,0(reg) Il gobal pointer punta in mezzo ai primi (2 16 ) bytes della sezione global Le variabli globali in quella porzione di indirizzi possono essere caricati con una sola istruzione lw dest,indirizzo($gp)...dove indirizzo individua la variabile. SPIM p.37/55 p.38/55 Configurazione di Memoria SPIM è il simulatore di assembly MIPS C è per Windows e Unix/Linux Puntatori dalla pagina web del corso ( lab-arch) hex : Riservata hex : Comincia il programma (.text) hex : Cominciano i dati (.data) 7FFFFFFF hex : [Stack] hex : [Kernel] p.39/55 p.40/55

11 SPIM e i programmi SPIM e i programmi II Tipicamente, SPIM antepone al programma un programmino per calcolare i dati in input E poi chiama il nostro programma, che assume abbia un etichetta main Il nostro programma dovrà cominciare con un etichetta main....text main: add $t0, $t1, $t2 # comincia il programma Siccome SPIM chiama il nostro programma main con una jal main (jump and link) lo vede come una procedura (parlemo più avanti delle procedure) Alla fine del nostro programma, per uscire, ritorniamo indietro con j $ra.text main: j $ra Numeri p.41/55 p.42/55 Incongruenza In SPIM, i numeri che scriviamo in assembly sono in base 10; se vogliamo un numero esadecimale (base 16) dobbiamo precederlo con 0x Esempi: addi $t0, $t1, 10 #t0 = t1+10 addi $t0, $t1, 0x10 #t0 = t1+16 ATTENZIONE: nella finestra dei registri, i valori sono in esadecimale, anche se non c è nessun 0x a ricordarvelo p.43/55 p.44/55

12 Precauzioni Illegalità Assicuratevi che quando eseguite il programma, la configurazione sia pulita Precauzioni (cont.) Gestione della finestre... Ricordatevi... SPIM (XSPIM, PCSPIM) è un programma come un altro, scritto da una persona come tale, può avere errori o cose strane versione attuale: Ci possono essere istruzioni illegali in un programma Ad esempio, un accesso alla memoria (load/store/jump) che non rispetta il principio di allineamento Oppure, una divisione per zero Che fare? p.45/55 p.46/55 Eccezioni (exceptions) Soluzione 1: si blocca tutto Non molto conveniente... basta una piccola dimenticanza, e tutto il programma si ferma Può andar bene per programmi giocattolo, ma pensate cosa succerebbe a programmi più grossi, tipo sistemi operativi È come se ad ogni piccolo errore, Windows 98 andasse in tilt... Lasciamo perdere! L altra soluzione è di avere qualcosa che gestisce queste situazioni di emergenza senza interrompere il programma Una sorta di dottore cui rivolgerci perché qualcosa è andato storto le cosiddette eccezioni Eccezioni Essenzialmente, quando un programma incontra un istruzione illegale, va dal medico a seconda dell istruzione, chiama dei programmi appositi che cercano di recuperare dall errore p.47/55 p.48/55

13 Eccezioni (cont.) Hotel di Hilbert A questi programmi vengono passate le informazioni necessarie per cercare di risolvere la situazione, quali Indirizzo dell istruzione colpevole Tipo di errore Valori dei registri Etc etc... In questo grande Hotel c è un numero infinito di stanze I numeri di stanza sono 1, 2, 3, 4, 5, 6,... L hotel è pieno p.49/55 Hotel di Hilbert (cont.) p.50/55 Hotel di Hilbert (cont.) Arriva un cliente il gestore chiede gentilmente al signore della stanza 1 di passare alla stanza 2, a quello della stanza 2 di passare alla stanza 3, etc. etc. sistema il nuovo arrivato nella stanza 1 Arriva un autobus enorme, con dentro un numero infinito di clienti Il gestore chiede gentilmente al signore della stanza 1 di passare alla stanza 2, a quello della stanza 2 di passare alla stanza 4, a quello della stanza 3 di passare alla stanza 6, etc. etc. sistema i nuovi arrivati nelle stanze 1, 3, 5, 7... p.51/55 p.52/55

14 Nel computer... Computer e Hotel di Hilbert Il computer è l hotel Ogni stanza è una frazione di secondo Il processore è il gestore L autobus è un programma che chiede di essere eseguito (ha bisogno, potenzialmente, di un sacco di tempo) L hotel è pieno a ogni frazione di secondo, il computer sta eseguendo un programma Arriva l autobus chiediamo di lanciare un altro programma Il processore, da buon gestore, sistema i nuovi arrivato nelle stanze 1, 3, 5, 7,... Nella 1a frazione di secondo, esegue il nuovo programma, nella 2a, continua quello che stava facendo prima, nella 3a, continua col nuovo programma, nella 4a continua quello di prima, e così via alternandosi... p.53/55 p.54/55 Multitask Questo è detto multitask o parallellismo di esecuzione Un solo processore riesce ad eseguire più programmi contemporaneamente Multitask e robustezza Se un programma esegue un istruzione illegale, viene lanciata un eccezione Anche nel caso più banale, l eccezione può stampare un errore e uccidere il programma perdiamo UN SOLO programma, ma tutti gli altri programmi continuano a essere eseguiti senza eccezioni, perderemmo tutti i programmi! p.55/55

Laboratorio di Architettura lezione 7. Massimo Marchiori W3C/MIT/UNIVE

Laboratorio di Architettura lezione 7. Massimo Marchiori W3C/MIT/UNIVE Laboratorio di Architettura lezione 7 Massimo Marchiori W3C/MIT/UNIVE La scorsa lezione Direttive assembly Etichette (labels) Esempi di compilazione delle strutture di controllo di alto livello (if, while)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MIPS Instruction Set 2

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

Dettagli

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE

Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE Laboratorio di Architettura lezione 5 Massimo Marchiori W3C/MIT/UNIVE Da Alto a Basso livello: compilazione Come si passa da un linguaggio di alto livello a uno di basso livello? Cioe a dire, come lavora

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

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

System Calls, Register Spilling

System Calls, Register Spilling System Calls, Register Spilling Ultimo aggiornamento: 8/4/2016 UNIVERSITÀ DEGLI STUDI DI MILANO nicola.basilico@unimi.it http://basilico.di.unimi.it/ Esercizio 3.1 Eseguire il seguente codice assembly

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

Assembly V: Procedure annidate e recursive

Assembly V: Procedure annidate e recursive Architettura degli Elaboratori e delle Reti Lezione 15 Assembly V: Procedure annidate e recursive Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

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

La scorsa lezione. Laboratorio di Architettura. Word e bytes... Questa lezione. Lezione 8

La scorsa lezione. Laboratorio di Architettura. Word e bytes... Questa lezione. Lezione 8 La scorsa lezione Laboratorio di Architettura Lezione 8 Andrea Torsello 1 Dipartimento di Informatica Università Ca Foscari di Venezia Procedure Convenzione di chiamata Stack (Push / Pop) Implementazione:

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

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

Laboratorio di Architettura

Laboratorio di Architettura Laboratorio di Architettura Lezione 5 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia p.1/49 La scorsa lezione Basi della compilazione da alto livello a basso livello Rappresentazione

Dettagli

Laboratorio di Architettura lezione 11. La scorsa lezione. Motivi? Word e bytes

Laboratorio di Architettura lezione 11. La scorsa lezione. Motivi? Word e bytes Laboratorio di Architettura lezione 11 Massimo Marchiori W3C/MIT/UNIVE La scorsa lezione Nove gradi di separazione Procedure ricorsive Stack Push / Pop Fibonacci Word e bytes Finora, abbiamo solo agito

Dettagli

Memoria: lettura, scrittura e indirizzamento

Memoria: lettura, scrittura e indirizzamento Memoria: lettura, scrittura e indirizzamento Ultimo aggiornamento: 27/3/2015 Università degli studi di Milano matteo.re@unimi.it https://homes.di.unimi.it/re/arch2-lab-2015-2016.html Organizzazione della

Dettagli

L ambiente di simulazione SPIM

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

Dettagli

Le tre famiglie fondamentali. Laboratorio di Architettura. 1. Manipolazione di dati. 1.1 Aritmetica di base. Lezione 3

Le tre famiglie fondamentali. Laboratorio di Architettura. 1. Manipolazione di dati. 1.1 Aritmetica di base. Lezione 3 Le tre famiglie fondamentali Laboratorio di Architettura Lezione 3 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia Ci sono tre famiglie fondamentali di istruzioni, per: 1.

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

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

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull

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

Il Linguaggio Assembly: Le procedure

Il Linguaggio Assembly: Le procedure Il Linguaggio Assembly: Le procedure Prof. Alberto Borghese Ing. I. Frosio Dipartimento di Scienze dell Informazione {borghese,frosio}@dsi.unimi.it Università degli Studi di Milano Riferimento sul Patterson:

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

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

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

Il simulatore SPIM SPIM

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

Dettagli

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F. Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/32 Linguaggio

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

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

Linguaggi. Laboratorio di Architettura INTERPRETI VANTAGGI DEBUG. Lezione 2

Linguaggi. Laboratorio di Architettura INTERPRETI VANTAGGI DEBUG. Lezione 2 Linguaggi Laboratorio di Architettura Lezione 2 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia È possibile programmare il computer usando vari linguaggi di programmazione

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

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

Il linguaggio macchina

Il linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/33 Linguaggio

Dettagli

L ambiente di simulazione SPIM

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

Dettagli

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

Esempi di Programmi Assembly. Luigi Palopoli, Luca Abeni

Esempi di Programmi Assembly. Luigi Palopoli, Luca Abeni Esempi di Programmi Assembly Luigi Palopoli, Luca Abeni Scopo della lezione In questa lezione vedremo alcuni esempi di programmi (o frammenti di programmi) in vari linguaggi assembly per renderciconto

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

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

Gestione delle eccezioni.

Gestione delle eccezioni. Gestione delle eccezioni nicola.basilico@unimi.it http://homes.di.unimi.it/basilico/teaching/ Eccezioni Fetch Decodifica Calcolo Lettura / scrittura Eccezione (es. istruzione non riconosciuta) Eccezione

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

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

Le procedure. Architetture dei Calcolatori (Lettere. Le procedure (3) Le procedure (2)

Le procedure. Architetture dei Calcolatori (Lettere. Le procedure (3) Le procedure (2) Le procedure Architetture dei Calcolatori (Lettere A-I) Procedure Prof. Francesco Lo Presti In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici SPIM Francesco Lo Presti Rielaborate da Salvatore Tucci SPIM q Simulatore che esegue programmi assembler per architetture RISC MIPS R2000/R3000 Legge programmi in assembler MIPS

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

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 2007/2008 Francesco Tortorella Istruzioni di confronto Istruzione Significato slt $t1,$t2,$t3 if

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

[http://www.di.univaq.it/muccini/labarch]

[http://www.di.univaq.it/muccini/labarch] [http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 3: Introduzione a SPIM

Dettagli

5 April LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE. I. Frosio

5 April LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE. I. Frosio 5 April 2012 04 LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE I. Frosio 1 SOMMARIO If... Then... If... Then... Else... For... Break... While... Do Do... While Switch (jump address

Dettagli

Laboratorio di Architettura degli Elaboratori

Laboratorio di Architettura degli Elaboratori Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Set di istruzioni del MIPS32: istruzioni aritmetiche e di trasferimento Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni

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

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

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

Procedure: esempi. Esempi: ricorsione fattoriale Fibonacci ordinamenti

Procedure: esempi. Esempi: ricorsione fattoriale Fibonacci ordinamenti Procedure: esempi Esempi: ricorsione fattoriale Fibonacci ordinamenti 1 Fattoriale ricorsivo PH p. 83 e A27 main(int argc, char *argv[]) { int n; printf( Inserire un numero intero\n"); scanf("%d", &n);

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria

Dettagli

Laboratorio di Architettura

Laboratorio di Architettura Laboratorio di Architettura Lezione 2 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia p.1/50 Linguaggi È possibile programmare il computer usando vari linguaggi di programmazione

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

FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc

FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc 44 FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc MODELLO VERILOG DEL PROCESSORE 45 MODELLO VERILOG DEL SISTEMA COMPLETO

Dettagli

Debug di un programma

Debug di un programma Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal

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

Programmi in Assembly

Programmi in Assembly Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin ORGANIZZAZIONE DEL CALCOLATORE:

Dettagli

SPIM e MIPS. Non abbiamo bisogno di una PSP per testare il codice

SPIM e MIPS. Non abbiamo bisogno di una PSP per testare il codice SPIM e MIPS Non abbiamo bisogno di una PSP per testare il codice Michele Jazzinghen Bianchi Interessi: Game Design, Embedded Systems email: michele.bianchi@unitn.it Webpage: http://disi.unitn.it/~bianchi

Dettagli

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. di Cassino e del Lazio Meridionale Corso di MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 201/201 Francesco Tortorella Istruzioni di confronto Istruzione

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

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

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

Lezione laboratorio SPIM

Lezione laboratorio SPIM Lezione laboratorio SPIM Uso di XSPIM Uso di PCSPIM Esercizio laboratorio 1 Cos è SPIM e cosa fa? SPIM è un simulatore che esegue programmi per le architetture MIPS R2000/R3000 SPIM può leggere ed assemblare

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'architettura del processore MIPS

L'architettura del processore MIPS L'architettura del processore MIPS Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento

Dettagli

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione Modifiche di orario Lezione 19 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Al posto della lezione di domani giovedì 22/5 (12-1)

Dettagli

i = 0; somma = 0; while i!= n { somma = somma + A[i]; if somma < n j = 0; else j = f2(a[i],somma); i = i + 1; $v0 return j

i = 0; somma = 0; while i!= n { somma = somma + A[i]; if somma < n j = 0; else j = f2(a[i],somma); i = i + 1; $v0 return j Esercizio 1 Compilare la seguete fuctio it esempio(it A[],it ) { it i; it somma; it j; i = 0; somma = 0; while i!= { somma = somma + A[i]; if somma < j = 0; else j = f2(a[i],somma); i = i + 1; $v0 retur

Dettagli

Mini-dispensa sui puntatori in C

Mini-dispensa sui puntatori in C Mini-dispensa sui puntatori in C P. Zavarise Versione 1 ottobre 013 1 Valore e indirizzo di una variabile Ripassiamo il significato di dal punto di vista del programmatore. int a=; Viene creata una variabile

Dettagli