Programmi in Assembly
|
|
|
- Corrado Lolli
- 8 anni fa
- Просмотров:
Транскрипт
1 Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite una procedura gli interi positivi # contenuti nell array (elem) in un secondo array (pos_el) Inizializzazione Leggi gli interi Individua gli interi positivi Copia gli interi positivi Stampa gli interi positivi 2/23
2 Esempio Numeri positivi in C main() { int i, k = 0, N=10, elem[10], pos_el[10]; elem = leggi_interi(n); for (i=0; i<n;i++) if (elem[i] > 0) { pos_el[k] = elem[i]; k++; printf( Il numero di interi positivi e %d,k); for (i=0; i<k; i++) printf( %d,pos_el[i]); exit(0); 3/23 Esempio numeri positivi in C # Programma che copia tramite una procedura gli interi positivi # contenuti nell array (elem) in un secondo array (pos_el).data elem:.space 40 # alloca 40 byte per array elem pos_el:.space 40 # alloca 40 byte per array pos_el prompt:.asciiz "Inserire il successivo elemento \n" msg:.asciiz "Gli elementi positivi sono \n".text.globl main main: la $s0, elem la $s1, pos_el li $s2, 40 # $s0 indirizzo di elem. # $s1 indirizzo di pos_el # $s2 numero di elementi (in byte). # Ciclo di lettura dei 10 numeri interi move $t0, $s0 # indice di ciclo add $t1, $s0, $s2 # $t1 posizione finale di elem loop: li $v0, 4 # $v0 codice della print_string la $a0, prompt # $a0 indirizzo della stringa # stampa la stringa prompt 4/23
3 Esempio Numeri positivi (Assembly) # Lettura dell intero li $v0, 5 # $v0 codice della read_int # legge l intero e lo carica in $v0 sw $v0, 0($t0) addi $t0, $t0, 4 bne $t0, $t1, loop # memorizza l intero in elem # Fine della lettura, ora prepara gli argomenti per la proc. move $a0, $s0 # $a0 ind. array elem. move $a1, $s1 # $a1 ind. array pos_el move $a2, $s2 # $a2 dim. in byte dell array elem # Chiamata della procedura cp_pos jal cp_pos # restituisce il numero di byte # occupati dagli interi pos in $v0 5/23 Esempio Numeri positivi (cont.) Numeri letti (elem) Numeri positivi (pos_elem) $s > $t2 $s > $t1 # ciclo di stampa degli elementi positivi # Gli indirizzi in cui e racchiuso pos_elem vanno da $s2 a $t2 add $t2, $s1, $v0 # $t2 ind. fine ciclo pos_el move $t0, $s1 # $t0 ind. di ciclo loop_w: beq $t2, $t0, exit_main li $v0, 1 # $v0 codice della print_integer lw $a0, 0($t0) # $a0 intero da stampare # stampa dell intero addi $t0, $t0, 4 j loop_w exit_main: li $v0, 10 # $v0 codice della exit # esce dal programma 6/23
4 Esempio 2 Numeri positivi (procedura) # Questa procedura esamina l array elem ($a0) contenente $a2/4 elementi # Resituisce in $v0, il numero di byte occupati dagli interi positivi e # in pos_el gli interi positivi cp_pos:addi $sp, $sp, -16 # allocazione dello stack sw $s0, 0($sp) sw $s1, 4($sp) sw $s2, 8($sp) sw $s3, 12($sp) move $s0, $a0 # $s0 ind. ciclo su elem add $s1, $a0, $a2 # $s1 ind. di fine ciclo su elem move $s2, $a1 # $s2 ind. ciclo su pos_el next: beq $s1, $s0, exit # se esaminato tutti gli elementi di elem # salta alla fine del ciclo (exit). lw $s3, 0($s0) # carica l elemento da elem addi $s0, $s0, 4 # posiziona sull elemento succ. di elem ble $s3, $zero, next # se $s3 0 va all elemento succ. di elem sw $s3, 0($s2) # Memorizzo il numero in pos_elem addi $s2, $s2, 4 # posiziona sull elemento succ. di pos_el j next # esamina l elemento successivo di elem exit: sub $v0, $s2, $a1 # salvo lo spazio in byte dei pos_el lw $s0, 0($sp) lw $s1, 4($sp) lw $s2, 8($sp) lw $s3, 12($sp) addi $sp,$sp,12 # deallocazione dello stack jr $ra # restituisce il controllo al chiamante 7/23 Fattoriale 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 == 0) return(1); else return(m*fact(m-1)); 8/23
5 Fattoriale (Implementazione assembly) # programma per il calcolo ricorsivo di n!.data prompt:.asciiz "Inserire un numero intero:" output:.ascii "Fattoriale:".text.globl main main: # Lettura dell intero di cui si calcola il fattoriale li $v0, 4 # $v0 codice della print_string la $a0, prompt # $a0 indirizzo della stringa # stampa della stringa $v0 li $v0, 5 # $v0 codice della read_int # legge l intero n e lo carica in 9/23 Fattoriale (cont.) # Calcolo del fattoriale move $a0, $v0 # $a0 n jal fact # chiama fact(n) move $s0, $v0 # $s0 n! # Stampa del risultato li $v0, 4 # $v0 codice della print_string la $a0, output # $a0 indirizzo della stringa # stampa della stringa di output move $a0, $s0 # $a0 n! li $v0, 1 # $v0 codice della print_int # stampa n! # Termine del programma li $v0, 10 # $v0 codice della exit # esce dal programma 10/23
6 fact: addi $sp, $sp,-8 sw $ra, 4($sp) sw $a0, 0($sp) core: Fattoriale (procedura) # alloca stack # salvo return address # salvo l argomento n bgt $a0, $zero, core # se n > 0 salta a core li $v0, 1 # $v0 1 j end addi $a0, $a0,-1 # decremento n fi (n 1) jal fact # chiama fact(n-1) in $v0 lw $a0, 0($sp) # ripristino n in $v1 mul $v0, $a0, $v0 # ritorno n * fact (n-1) end: lw $ra, 4($sp) addi $sp, $sp, 8 jr $ra # ripristino return address # dealloca stack # ritorno al chiamante 11/23 Osservazioni L esecuzione e suddivisa in un ciclo superiore (dall etichetta fact: alla jal fact) ed in un ciclo inferiore (dalla prima istruzione dopo la jal fact - lw $a0, 0($sp) alla fine della procedura. Gli elementi maggiormente interessati dalla ricorsione sono: -il registro $a0, -il registro $ra, -lo stack, che cresce nel ciclo superiore e decresce nel ciclo inferiore. 12/23
7 Fibonacci main(int argc, char *argv[]) { int n; printf( Inserire un intero\n"); scanf("%d", &n); printf( Numero di Fibonacci di %d = %d\n", n, fib(n)); int fib(int m) { if (m == 1) return(1); else if (m == 0) return(0); else return(fib(m-1)+fib(m-2)); 13/23 Fibonacci (cont.).data prompt:.asciiz "Inserire un numero intero: \n" output:.asciiz "Numero di Fibonacci: " main:.text.globl main li $v0, 4 la $a0, prompt li $v0, 5 # stampa la stringa # legge l intero 14/23
8 Fibonacci (cont.) # calcola fibonacci(n) move $a0, $v0 move $a1, $0 jal fib # stampa il risultato ed esci move $a1, $v0 # salva il valore restituito da fib in t0 li $v0, 4 la $a0, output move $a0, $a1 li $v0, 1 li $v0, 10 15/23 Fibonacci (cont.) # Fibonacci. Legge la somma parziale in a1 e in a0 il numero. # Restituisce v0 = fib(a0-1)->a1 + fib (a0-2)->v0. fib: addi $sp, $sp,-12 core: return: sw $ra, 8($sp) sw $a0, 4($sp) sw $a1, 0($sp) #salva i parametri in input #salva il risultato della precedente #chiamata di fib li $t0, 1 bgt $a0, $t0, core # se n> 1, continua, # altrimenti restituisci n move $v0,$a0 # n = 0 or n = 1. j return addi $a0, $a0,-1 # n fi n-1 jal fib # chiama fib(n-1) move $a1, $v0 # salva fib(n-1) nello stack (a1) addi $a0, $a0,-1 # $a0 diventa n-2 jal fib # esegue fib(n-2) add $v0, $v0, $a1 # somma fib(n-1) e fib(n-2) lw $ra, 8($sp) lw $a0, 4($sp) lw $a1, 0($sp) addi $sp, $sp, 12 jr $ra 16/23
9 Esempio - Numeri primi bozza in C main(int argc, char *argv[]) { int primes_test = [ ]; int primes[10], n_primes, n_primes_test = 10, i; printf( Inserire un intero\n"); scanf("%d", &n); printf( I numeri primi sono: ); [n_primes primes] = find_primes(n, n_primes_test, primes_test, primes) for (i=0; i< n_primes; i++) printf( %d,primes[i]); exit(0); [int n_primes, int primes[10]] = find_primes(int n, int n_primes_test, int primes_test[10], int primes[10]) { int t = n_primes_test, k = 0, l = n; while (t > 0) { [primes[10], t] = find_first_prime(l, n_primes_test, primes_test[10], primes[10], t); return(.); 17/23 Numeri primi - Assembly.data prompt:.asciiz "Inserire un numero intero: " output:.asciiz "I numeri primi sono: " primes_test:.word primes:.space 40 spazio:.asciiz " ".text.globl main # $s0 ($a0) contiene il numero di numeri primi da testare (in byte). # $s1 ($a1) contiene l indirizzo del vettore dei numeri primi da testare # $s2 ($a2) contiene N, il numero primo da scomporre # $s3 ($a3) contiene l indirizzo del vettore dei numeri primi di N # $s4 ($v0) contiene il numero di numeri primi di N (in byte). main: li $s0, 40 # Impostato alla lunghezza di primes_test (in byte) la $s1, primes_test li $v0, 4 la $a0, prompt # stampa prompt 18/23
10 Numeri primi (cont.) li $v0, 5 move $s2, $v0 # legge l intero N la $s3, primes move $a0, $s0 # prepara la chiamata move $a1, $s1 # prepara la chiamata move $a2, $s2 # prepara la chiamata move $a3, $s3 # prepara la chiamata jal find_primes move $s4, $v0 # numero di primi di N (in byte) # scrivo anche il numero 1 come costituendo di N lw $t0, 0($s1) add $t1, $s4, $s3 sw $t0, 0($t1) addi $s4, $s4, 4 19/23 Numeri primi (cont.) # stampa il risultato ed esci li $v0, 4 la $a0, output move $t0, $s3 add $t1, $s4, $t0 Loop_w: beq $t0, $t1, fine li $v0, 4 la $a0, spazio # Stampa uno spazio lw $a0, 0($t0) li $v0, 1 fine: addi $t0, $t0, 4 j Loop_w li $v0, 10 20/23
11 Numeri primi (cont.) find_primes: addi $sp, $sp, -8 sw $ra, 0($sp) sw $a0, 4($sp) move $v0, $zero addi $a0, $a0, -4 # memorizza il numero di primi di N # in numero di byte # elemento di prime_test # in find_first_prime: # a2 viene diviso via via per tutti i primi # a0 viene decrementato via via che i primi sono esaminati. jal find_first_prime lw $ra, 0($sp) lw $a0, 4($sp) addi $sp, $sp, 8 jr $ra 21/23 Numeri primi (cont.) find_first_prime: addi $sp, $sp, -4 sw $ra, 0($sp) oltre: fine_1: beq $a0, $zero, fine_1 add $t0, $a1, $a0 lw $t2, 0($tx0) addi $a0, $a0, -4 rem $t3, $a2, $t2 bgtz $t3, oltre div $a2, $a2, $t2 add $t4, $v0, $a3 sw $t2, 0($t4) addi $v0, $v0, 4 jal find_first_prime lw $ra, 0($sp) addi $sp, $sp, 4 jr $ra # il ciclo termina quando ci si posiziona sul # primo elemento di primes_test (cioe' base + 4) # (primo elemento di prime_test che e' = 1) # estraggo il numero primo da testare # mi posiziono sul numero primo successivo da # esaminare # guardo se $t2 e' un divisore di N # se non e' un divisore di N, passo al successivo # numero primo da esaminare # divido N per il numero primo trovato # $t4 indirizzo su primes in cui scrivere # memorizzo il numero primo trovato # punto al nuovo elemento in primes 22/23
12 Esercizi Estrazione di numeri pari da un vettore di N numeri interi. Scrivere un algoritmo di bubble-sort o quick-sort. Ricerca di una stringa (e.g. nome ) all interno di un testo. 23/23
Assembly 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
Assembly 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
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
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
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:
Calcolatori 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
Esercitazione 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
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
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
Le costanti Le modalità di indirizzamento L assembly del MIPS
Le costanti Le modalità di indirizzamento L assembly del MIPS Prof. Alberto Borghese Dipartimento di Scienze dell Informazione [email protected] Università degli Studi di Milano 1/45 Sommario Le costanti
Passaggio di Parametri per Valore o Indirizzo
Passaggio di Parametri per Valore o Indirizzo Come in C, l assembler permette di passare un dato per valore (copia) o per indirizzo, nel secondo caso rendendo modificabile il dato stesso da dentro una
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
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg [email protected] Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità
Linguaggio Assembler MIPS
Linguaggio Assembler MIPS Corso di Calcolatori Elettronici Corso di Calcolatori Elettronici A A.A. 2000/2001 Dr. Daniela Fogli Notazione Operazioni aritmetiche: Somma add a, b, c fa la somma di b e c e
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
AA 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
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
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
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
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali
Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori
Lecture 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
Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div
MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Istruzioni Significato add $t1, $t2, $t3 $t1 = $t2 + $t3 sub $t1, $t2, $t3 $t1 = $t2 - $t3 mult $t1, $t2 Hi,Lo = $t1*$t2 div
Esercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Fondamenti 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
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
Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
Esempi di Problemi Iterativi
Corso di Laurea Ingegneria Civile Elementi di Informatica Esempi di Problemi Iterativi C. Limongelli Esempi di Problemi Iterativi 1 Contenuti Esercizi: Palindroma Anagramma Fibonacci Esempi di Problemi
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Stringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
Ricorsione. Corso di Fondamenti di Informatica
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e
Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly
Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.
1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Spiegare i diversi tipi di indirizzamento usati dalle istruzioni del set
Esercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
Laboratorio di Programmazione M-Z
Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini [email protected] Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più
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
Lezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
Esercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
Uso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi
Istruzioni iterative. Istruzioni iterative
Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",
Calcolatori Elettronici A a.a. 2008/2009
Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS Massimiliano Giacomin 1 Architettura MIPS Architettura RISC e load-store sviluppata da John Hennessy nel 1981 Usata da NEC, Nintendo,
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
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
Processore Danilo Dessì. Architettura degli Elaboratori.
Processore 8088 Architettura degli Elaboratori Danilo Dessì [email protected] Subroutine Anche nel linguaggio assemblativo è possibile suddividere un programma in subroutine Per invocare una subroutine
Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
Calcolatori Elettronici
Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:
Inserimento in una lista ordinata
Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il
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
1 (6) 2 (7) 3 (7) 4 (7) 5 (6)
CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B anno accademico 010-011 Prof. Danilo ARDAGNA Seconda Prova in Itinere 7.06.011 Durata 1h 30 Valutazioni 1 (6) (7) 3 (7) 4 (7)
Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:
Cognome.. Nome.... Architettura degli Elaboratori Classe 3 Prof.ssa Anselmo Appello del 18 Febbraio 2015 Attenzione: Inserire i propri dati nell apposito spazio sottostante e in testa a questa pagina.
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
Programmazione Assembly per 8088: Esercizi svolti
Programmazione Assembly per 8088: Esercizi svolti Marco Di Felice 13 dicembre 2006 1 Esercizio 1 (esercizio 1 del Tanenbaum, Appendice C) TESTO. Dopo l esecuzione dell istruzione MOV AX, 702 qual è il
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
Esame di Architetture Canale MZ Prof. Sterbini 8/6/15
Esame di Architetture Canale MZ Prof. Sterbini 8/6/15 Cognome e Nome: Matricola: Parte 1 (per chi non ha superato l'esonero 1 ora) Esercizio 1 (14 punti). In una partita di CPU a ciclo di clock singolo
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
