Procedure: esempi. Esempi: ricorsione fattoriale Fibonacci ordinamenti
|
|
- Gennara Adamo
- 5 anni fa
- Visualizzazioni
Transcript
1 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); printf( Fattoriale: %d\n", fact(n)); int fact(int m) { if (m < 1) return(1); else return( m*fact(m-1) ); 2 1
2 Fattoriale ricorsivo: main # programma per il calcolo ricorsivo di n!.data prompt:.asciiz Inserire un numero intero:" output:.ascii Fattoriale: main:.text li $v0, 4 # $v0 <- codice print_string la $a0, prompt # $a0 <- indir. della stringa syscall # stampa della stringa li $v0, 5 # $v0 <- codice della read_int syscall # legge l intero n in $v0 3 Fattoriale ricorsivo (main: cont.) move $a0, $v0 # $a0 <- n jal fact # chiama fact(n) move $s0, $v0 # $s0 <- n! li $v0, 4 # $v0 <- codice print_string la $a0, output # $a0 <- indirizzo della stringa syscall # stampa della stringa di output move $a0, $s0 # $a0 <- n! li $v0, 1 # $v0 <- codice della print_int syscall # stampa n! li $v0, 10 # $v0 <- codice della exit syscall # esce dal programma 4 2
3 Fattoriale ricorsivo (fact... ) fact: addi $sp, $sp,-8 # alloca stack sw $ra, 4($sp) # salvo return address sw $a0, 0($sp) # salvo l argomento m slti $t0, $a0, 1 # se m >= 1 salta a core beq $t0, $zero, core li $v0, 1 # $v0 <- 1 j end core: addi $a0, $a0,-1 # decremento m-> (m 1) jal fact # chiama fact(m-1)-> $v0 lw $a0, 0($sp) # ripristino m in $a0 mul $v0, $a0, $v0 # ritorno m * fact (m-1) int fact(int m) { if (m < 1) return(1); else return(m*fact(m-1)); 5 Fattoriale ricorsivo (fact cont.) end: lw $ra, 4($sp) # ripristino return address addi $sp, $sp, 8 # dealloca stack jr $ra # ritorno al chiamante 6 3
4 Fibonacci ricorsivo Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13,..... F(n) = F(n-1) + F(n-2) 7 Fibonacci ricorsivo (in C) main(int argc, char *argv[]) { int n; printf( Inserire un intero\n"); scanf("%d", &n); printf( Numero di Fibonacci %d\", fib(n)); int fib(int m) { if (m <= 1) return(m); else return( fib(m-1) + fib(m-2) ); 8 4
5 Fibonacci ricorsivo: main.data prompt:.asciiz Inserire un numero intero: \n" output:.asciiz Numero di Fibonacci: ".text.globl main main: li $v0, 4 la $a0, prompt syscall # stampa la stringa li $v0, 5 syscall # legge l intero 9 Fibonacci ricorsivo: main (cont.) # calcola fibonacci(m) move $a0, $v0 jal fib # stampa il risultato move $t1, $v0 # $t1 <= valore restituito da fib1 li $v0, 4 # print_string la $a0, output syscall move $a0, $t1 li $v0, 1 syscall # print_int li $v0, 10 syscall # exit 10 5
6 Fibonacci ricorsivo: fib fib: addi $sp, $sp,-12 sw $ra, 8($sp) sw $a0, 4($sp) # salva il parametro in input sw $s1, 0($sp) # $s1 per il risultato della # chiamata precedente di fib li $t0, 1 bgt $a0, $t0, core # se m > 1, continua, # altrimenti restituisci m move $v0,$a0 # return (m); j return 11 Fibonacci ricorsivo: fib (cont) core: addi $a0, $a0,-1 # m -> m-1 jal fib # chiama fib(m-1) move $s1, $v0 # salva fib(m-1) nello stack addi $a0, $a0,-1 # $a0 diventa m-2 jal fib # esegue fib(m-2) add $v0, $v0, $s1 # somma fib(m-1) e fib(m-2) 12 6
7 Fibonacci ricorsivo (cont.) return: lw $ra, 8($sp) lw $a0, 4($sp) lw $s1, 0($sp) addi $sp, $sp, 12 jr $ra 13 Esempio Procedura per l'ordinamento di un vettore PH
8 Procedura Scambia // da Patt. Hen. p. 122 static void scambia (int v[], int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; 15 Procedura Ordina ( Insertion Sort ) // da Patterson, Hennessy, p. 124 static void ordina(int v[], int n) { int i,j; for (i=0; i<n; i=i+1) for (j=i-1; j>=0 && v[j] > v[j+1]; j=j-1) scambia(v,j); i n j j
9 Procedura Ordina ( Insertion Sort ) for (i=0; i<n; i=i+1) for (j=i-1; j>=0 && v[j] > v[j+1]; j=j-1) scambia(v,j); i n j j+1 i n j j+1 i n Traduzione di Scambia # void scambia (int v[], int k) scambia: sll $t1, $a1, 2 # arg1 k add $t1, $a0, $t1 # t1= &v[k] lw $t0, 0($t1) # t0 = v[k] lw $t2, 4($t1) # t2 = v[k+1] sw $t2, 0($t1) # v[k] = t2 sw $t0, 4($t1) # v[k+1] = t0 jr $ra $t1 = &v[k] n
10 Ordina - prologo ordina: addi $sp, $sp, -20 # stack frame sw $ra, 16($sp) # salva i registri sw $s3, 12($sp) sw $s2, 8($sp) sw $s1, 4($sp) # j in $s1 i in $s0 j in $s1 v in $s2 sw $s0, 0($sp) # i in $s0 n in $s3 move $s2, $a0 # v in $s2 move $s3, $a1 # n in $s3 19 Ordina - ciclo esterno move $s0, $zero # i = 0 for1tst: slt $t0, $s0, $s3 # $t0 = 0 se i >= n beq $t0, $zero, fine # for (j=i-1; j>=0 && v[j]>v[j+1]; j=j-1) add $s1, $s0, -1 # j = i-1 i in $s0 j in $s1 v in $s2 n in $s
11 Ordina - ciclo interno for2tst: i in $s0 j in $s1 v in $s2 n in $s3 # for (j=i-1; j>=0 && v[j]>v[j+1]; j=j-1) slti $t0, $s1, 0 # $t0 = 1 se j < 0 bne $t0, $zero, cont2 # -> se j < 0 sll $t1, $s1, 2 # $t1 = j * 4 add $t2, $s2, $t1 lw $t3, 0($t2) lw $t4, 4($t2) slt $t0, $t4, $t3 # $t2 = &v[j] # $t3 = v[j] # $t4 = v[j+1] # $t0=1 se v[j+1]<v[j] beq $t0, $zero, cont2 # se v[j+1] >= v[j] # go to cont2 21 Ordina - ciclo interno i in $s0 j in $s1 v in $s2 n in $s3 move $a0, $s2 move $a1, $s1 jal scambia # s2 = &v # s1 = j # scambia(v,j); addi $s1, $s1, -1 # j = j - 1 j for2tst cont2: addi $s0, $s0, 1 # i = i + 1 j for1tst for (i=0; i<n; i=i+1) for (j=i-1; j>=0 && v[j] > v[j+1]; j=j-1) scambia(v,j); 22 11
12 Ordina - epilogo fine: lw $s0, 0($sp) lw $s1, 4($sp) lw $s2, 8($sp) lw $s3, 12($sp) lw $ra, 16($sp) addi $sp, $sp, 20 jr $ra i in $s0 j in $s1 v in $s2 n in $s
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
DettagliAssembly 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
DettagliLe 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:
DettagliAssembly 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
DettagliArchitetture 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
DettagliIl 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:
DettagliLe 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
DettagliLaboratorio 6 - MIPS 2
Laboratorio 6 - MIPS 2 1 Laboratorio printvet scambia down-heap esercizi proposti heap_sort 2 1 down-heap down-heap 14 heap 37 heap 40 20 25 35 30 15 10 12 17 27 3 down-heap 14 40 37 40 14 20 25 35 30
DettagliAssembly MIPS: gestione degli array strutture di controllo. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano
Architettura degli Elaboratori Assembly MIPS: gestione degli array strutture di controllo A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1 Istruzione MIPS: lw (load
DettagliLe 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
DettagliL 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
DettagliESERCIZIO 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
DettagliStringhe di caratteri
Stringhe di caratteri PH 2.8 1 Gestione dei caratteri Ogni carattere è rappresentato univocamente mediante un codice numerico rappresentabile usando un byte (codice ASCII) MIPS fornisce le istruzioni lb
DettagliGestione 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
DettagliIl 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
DettagliAssembly MIPS: Istruzioni native e Pseudo-istruzioni Gestione di costanti in MIPS
Architettura degli Elaboratori e delle Reti Assembly MIPS: Istruzioni native e Pseudo-istruzioni Gestione di costanti in MIPS F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1
DettagliSPIM 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
Dettagli15 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
DettagliAssembly III SPIM: un ambiente di simulazione MIPS
Architettura degli Elaboratori e delle Reti Lezione 13 Assembly III SPIM: un ambiente di simulazione MIPS Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi
DettagliIstruzioni 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
DettagliIl linguaggio assembly
Il linguaggio assembly Direttive Chiamate di sistema (system call) Esempi 1 Direttive Le direttive (data layout directives) danno delle indicazioni all'assemblatore sul contenuto di un file (istruzioni,
DettagliL insieme delle istruzioni (5)
L insieme delle istruzioni (5) Architetture dei Calcolatori (lettere A-I) Esempio di procedura annidata Codice C Assumiamo che set_array sia la prima procedura chiamata Assumiamo che la variabile i corrisponde
DettagliLinguaggio Assembler MIPS
Linguaggio Assembler MIPS Corso di Calcolatori Elettronici Corso di Calcolatori Elettronici A A.A. 2000/2001 Dr. Daniela Fogli Notazione Operazioni aritmetiche: Somma add a, b, c fa la somma di b e c e
Dettaglip = 7. E = bias + p = = E = s e m
255 1 0.125 0 127 1 0.25 0 63 1 0.5 1 31 1 15 1 7 1 3 1 1 1. Rappresentazione binaria: 11111111.001 2. Scorrere la virgola: 3. Bit di segno: Numero positivo 0. 4. Esponente: 5. Mantissa: 1111111001 (ottenuta
DettagliEsempio di procedura annidata. L insieme delle istruzioni (5) Esempio di procedura annidata (2) set_array: Esempio di procedura annidata (3)
L insieme delle istruzioni (5) Architetture dei Calcolatori (lettere A-I) Esempio di procedura annidata Codice C Assumiamo che set_array sia la prima procedura chiamata Assumiamo che la variabile i corrisponde
DettagliAssembly (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:
DettagliL 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
DettagliAssembler 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
DettagliCalcolatori Elettronici A a.a. 2008/2009
Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS ESERCIZI Massimiliano Giacomin ESERCIZIO Utilizzando la green card, tradurre in linguaggio macchina le due istruzioni in assembly
DettagliAssembly 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:
DettagliRichiami: v[i] e &v[i] Organizzazione della memoria. Esercizio 1. Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis
Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis Corso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica Capitolo 5 Linguaggio Assembly
DettagliModalità di indirizzamento
Modalità di Indirizzamento + Programmi Architettura degli Elaboratori e delle Reti Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email: borghese@dsi.unimi.it
DettagliGestione 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
DettagliAssembly (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
DettagliEsempi 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
DettagliIstruzioni 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:
DettagliRecord di Attivazione Cenni sulla ricorsione
MASTER Information Technology Excellence Road (I.T.E.R.) Cenni sulla ricorsione Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il modello a RUN-TIME
DettagliUniversità 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
DettagliPassaggio di Parametri per Valore o Indirizzo
Passaggio di Parametri per Valore o Indirizzo Come in C, l assembler permette di passare un dato per valore (copia) o per indirizzo, nel secondo caso rendendo modificabile il dato stesso da dentro una
DettagliUniversità 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
DettagliFetch 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
DettagliCalcolatori 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
DettagliSystem 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
DettagliIl Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti
Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti Prof. Alberto Borghese Ing. Iuri Frosio Dipartimento di Scienze dell Informazione borghese,frosio@dsi.unimi.it Università degli Studi
DettagliSommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali
Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori
DettagliRicorsione. quindi si può definire n! mediante i seguenti due punti:
Ricorsione Due definizioni del fattoriale Prima definizione: n! = 1 2 3....(n-1) n Per la seconda definizione notiamo che 1 2 3.... n = (n-1)! n (n-1)! quindi si può definire n! mediante i seguenti due
DettagliCorso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica
Modulo Calcolatori Elettronici Prof. Gian Luca Marcialis Corso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica Capitolo 5 Linguaggio Assembly Fonti
DettagliConvenzioni 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
DettagliARCHITETTURE 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/ 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
DettagliRICORSIONE. Informatica B - A.A. 2013/2014
RICORSIONE Informatica B - A.A. 2013/2014 RICORSIONE Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che comporta
DettagliMIPS 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
DettagliEsercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly
Esercitazione di Calcolatori Elettronici Ing. Battista Biggio Corso di Laurea in Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Richiami: v[i] e &v[i] v[i] è il valore dell elemento i nel vettore
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliRichiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis
Esercitazione di Ing. Gian Luca Corso di Laurea in Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Richiami: v[i] e &v[i] v[i] è il valore dell elemento i nel vettore v; &v[i] è il suo indirizzo.
DettagliCapitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
DettagliOperativamente, risolvere un problema con un approccio ricorsivo comporta
! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa!! La ricorsione consiste nella possibilità di definire una funzione in termini di se
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 5: Funzioni e programmazione modulare Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Esercizi (Fibonacci e numeri primi) Funzioni Regole
DettagliArchitetture 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
DettagliLaboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini
[http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 09: - Modi di indirizzamento del MIPS
DettagliIl 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...
DettagliIstruzioni 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
DettagliESERCIZIO: Analisi di un programma. Dato il seguente programma C:
: Analisi di un programma Dato il seguente programma C: #include #define D 4 float A(float V[], int k) {int i; float s=0.0; for(i=0;i
DettagliCalcolatori 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
Dettagli5 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
DettagliDal sorgente all eseguibile I programmi Assembly
Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/46 Sommario Dal linguaggio ad
DettagliLA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa
LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini
DettagliControllo di flusso. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso
Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Controllo di flusso Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135 Milano
DettagliRicorsione in C. slides credit Prof. Paolo Romano
Ricorsione in C slides credit Prof. Paolo Romano 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati ottenuti risolvendo i
DettagliLe costanti Le modalità di indirizzamento L assembly del MIPS
Le costanti Le modalità di indirizzamento L assembly del MIPS Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/45 Sommario Le costanti
DettagliGestione 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
DettagliIl 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...
DettagliProcedure annidate. Università degli studi di Milano
Procedure annidate Università degli studi di Milano matteo.re@unimi.it http://homes.di.unimi.it/re/ Procedura foglia Scenario più semplice: il main chiama una procedura, la procedura termina senza chiamare
DettagliFUNZIONI: IL MODELLO A RUN-TIME!
FUNZIONI: IL MODELLO A RUN-TIME! Ogni volta che viene invocata una funzione si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri e per le variabili locali
DettagliLinguaggio Assembler MIPS
Linguaggio Assembler MIPS Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Architettura MIPS Architettura RISC sviluppata
DettagliAA 2006-07 LA RICORSIONE
PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella
DettagliIl 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:
DettagliArchitettura 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
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
DettagliINFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità
Dettagli26 April CHIAMATA A PROCEDURE PROCEDURE ANNIDATE PROCEDURA RICORSIVE I. Frosio
CHIAMATA A PROCEDURE PROCEDURE ANNIDATE PROCEDURA RICORSIVE I. Frosio SOMMARIO Procedure di sistema (syscall) / direttive Chiamata a procedura semplice Chiamata a procedure intermedia Procedure ricorsive
Dettaglii = 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
DettagliLecture 2: Prime Istruzioni
[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 2: Prime Istruzioni
DettagliRICORSIONE RICORSIONE
Perchè RICORSIONE (Come, Quando e Perchè) i programmi ricorsivi sono più chiari, più semplici, più brevi e più facili da capire delle corrispondenti versioni iterative. il programma spesso riflette fedelmente
DettagliFondamenti di Informatica T. Linguaggio C: Stack e Ricorsione
Linguaggio C: Stack e Ricorsione FUNZIONI: IL MODELLO A RUN-TIME Ogni volta che viene invocata una funzione: si crea di una nuova attivazione (istanza) del servitore viene allocata la memoria per i parametri
DettagliMIPS! !
MIPS! Sono descritte solamente le istruzioni di MIPS32, le pseudo-istruzioni, System Calls e direttive del linguaggio assembly che sono maggiormente usate.! MIPS è big-endian, cioè, lʼindirizzo di una
DettagliRicorsione. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico
Ricorsione Stefano Ferrari Università degli Studi di Milano stefanoferrari@unimiit Programmazione anno accademico 2016 2017 Funzioni ricorsive Chiamata è ciascun uso di una funzione nel main o in un altra
DettagliCalcolatori 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
DettagliCominciamo con un esempio... Utilizzando un sottoprogramma 16/12/2017
Cominciamo con un esempio... Franco FRATTOLILLO Dipartimento di Ingegneria Università degli Studi del Sannio Corso di "Programmazione I" Corso di Laurea in Ingegneria Informatica / ExAT 1 Franco FRATTOLILLO
DettagliProblema: stampa degli interi compresi tra n e m
Costrutti imperativi Problema: stampa degli interi compresi tra n e m http://caml.inria.fr/pub/docs/manual-ocaml/libref/pervasives.html Output functions on standard output val print_string: string -> unit
DettagliPROVA SCRITTA DEL CORSO DI C A L C O L A T O R I E L E T T R O N I C I NUOVO ORDINAMENTO DIDATTICO 24 Settembre 2009
PROVA SCRITTA DEL CORSO DI C A L C O L A T O R I E L E T T R O N I C I NUOVO ORDINAMENTO DIDATTICO 24 Settembre 2009 NOME: COGNOME: MATRICOLA: ESERCIZIO 1 (9 punti) 1. (4 punti) Progettare un Full Adder.
DettagliCorso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione
Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale
DettagliManualino 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
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliCOMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME
COMPITINO # di CALCOLATORI ELETTRONICI del 03--09 MATRICOLA COGNOME NOME ) [8/40] Trovare il codice assembly MIPS corrispondente dei seguenti micro-benchmark (utilizzando solo e unicamente istruzioni dalla
Dettagli3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita!
3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita! Qualche informazione sull esonero Argomenti trattati: svolti nelle
DettagliRICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di
RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di esempio CERCA 90 NEL SACCHETTO = estrai num Casi num 90 Effetti CERCA 90 NEL
DettagliLezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
Dettagli