Il linguaggio assembly

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il linguaggio assembly"

Transcript

1 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 f = f -1; 2 1

2 Protocollo chiamata a procedura Il procedura chiamante deve eseguire le seguenti operazioni: Predisporre i parametri di ingresso in un posto accessibile alla procedura chiamata Trasferire il controllo alla procedura chiamata La procedura chiamata deve eseguire le seguenti operazioni: Allocare lo spazio di memoria necessario ai propri dati locali (record di attivazione) Eseguire il codice (corpo della procedura chiamata) Memorizzare il risultato in un luogo accessibile al chiamante Restituire il controllo al chiamante 3 Allocazione dei registri Convenzioni per l'allocazione dei registri nelle le chiamate a procedura: $a0-$a3 ($f12-$f15) registri argomento usati dal chiamante per il passaggio dei parametri Se i parametri sono più di 4 si passano mediante lo stack $v0,$v1 ($f0,, $f3) registri valore sono usati dalla procedura per memorizzare i valori di ritorno $ra (return address) registro di ritorno per memorizzare l'indirizzo della prima istruzione del chiamante da eseguire una volta terminata la procedura 4 2

3 Istruzione jal E' necessaria un'apposita istruzione per cambiare il flusso di esecuzione (salto a procedura) e memorizzare l'indirizzo di ritorno (istruzione successiva alla chiamata di procedura) jal Indirizzo_Procedura (jump and link) Salta all'indirizzo con etichetta Indirizzo_Procedura e memorizza il valore corrente del Program Counter (indirizzo dell'istruzione successiva PC+4) in $ra La procedura chiamata come ultima istruzione esegue jr $ra per effettuare il salto all'indirizzo di ritorno 5 Chiamata a procedura: responsabilità Il programma chiamante deve: Mettere i valori dei parametri da passare alla procedura chiamata nei registri $a0-$a3 (eventualmente nello stack) Utilizzare l'istruzione jal addr per saltare alla procedura e salvare il valore di (PC+4) nel registro $ra La procedura chiamata deve: Eseguire il proprio codice Memorizzare il risultato nei registri $v0, $v1 Restituire il controllo al chiamante con l'istruzione jr $ra 6 3

4 Esempio 1 funzione chiamante C : // res = prod(f,g); // # $s5 contiene f # $s6 contiene g # $s1 contiene res MIPS : move $a0, $s5 # argomento f move $a1, $s6 # argomento g jal prod # chiama prod(f,g) lab: move $s1, $v0 # res = f*g 7 Esempio 1 - funzione chiamata C : int prod (int x, int y) { int out; out = x * y; return out; } MIPS : prod: mult $t0, $a0, $a1 //out = $t0 = x*y move $v0, $t0 // $v0 = out jr $ra // return 8 4

5 Esempio 1 - funzione chiamata C : int prod (int x, int y) { return x * y; } MIPS : prod: mult $v0, $a0, $a1 // $v0 = $t0 = x*y jr $ra // return 9 Esempio 2 (chiamante) C : int v[ ]; // $s2 int k; // $s3 // swap (v, k); // k MIPS : #$s2 contiene indiriz. v #$s3 contiene k move $a0, $s2 // v move $a1, $s3 // k jal swap 10 5

6 Esempio 2 (proc. chiamata) PH. p. 122 void swap (int v[], int k) { int temp; temp = v[k]; #$a0 base address di v v[k] = v[k+1]; #$a1 contiene k v[k+1] = temp; #$t1 usato per temp } swap: sll $t1, $a1, 2 # $t1 = k*4 add $t0, $a0,$t1 # $t0 addr. v[k] lw $t1, 0($t0) # temp = v[k] k MIPS : lw $t2, 4($t0) # $t2 = v[k+1] sw $t2, 0($t0) # v[k] = $t2 sw $t1, 4($t0) # v[k+1] = temp jr $ra 11.text main: # read int in $t0 li $v0, 5 syscall move $t0, $v0 Esempio 3: fattoriale # parametro in $a0 move $a0, $t0 # calcola ($t0)! jal fact # chiamata # risultato in $t1. move $t1, $v0 # stampa il fat.le li $v0, 1 move $a0, $t1 syscall #.. fact: li $v0,1 #risultato # ripete fino a che # $a0 <= 1 loop: ble $a0, 1, fine # $v0 = $v0 * $a0 mul $v0, $v0, $a0 # $a0 = $a0-1 sub $a0, $a0, 1 j loop # risultato in $v0 fine: jr $ra # return 12 6

7 Chiamata a procedura - Problemi Problemi: la procedura chiamante vuole passare più di 4 argomenti alla procedura chiamata la procedura chiamata vuole ritornare più di due valori alla procedura chiamante il programma chiamante ha bisogno di mantenere inalterati dei registri che la procedura chiamata potrebbe modificare allocare lo spazio necessario per le variabili locali della procedura chiamata gestire procedure annidate (procedure che richiamano al loro interno altre procedure) e procedure ricorsive (procedure che invocano dei cloni di se stesse) 13 Soluzione : uno stack Lo stack (pila) è una struttura dati costituita da una coda LIFO (last-in-first-out) I dati sono inseriti nello stack con l'operazione push I dati sono prelevati dallo stack con l'operazione pop E' necessario un puntatore al top dello stack per salvare i registri che servono al programma chiamato Il registro $sp (stack pointer o puntatore allo stack) contiene l'indirizzo del top dello stack e viene aggiornato ogni volta che viene inserito o estratto il valore di un registro 14 7

8 Gestione dello stack Lo stack cresce da indirizzi di memoria alti verso indirizzi di memoria bassi Il registro $sp contiene l'indirizzo all ultima posizione occupata in cima allo stack L'inserimento di un dato nello stack (operazione di push) avviene decrementando $sp per allocare lo spazio Il prelevamento di un dato dallo stack (operazione di pop) avviene incrementando $sp (per eliminare il dato) e riducendo quindi la dimensione dello stack 15 Gestione dello stack Tutto lo spazio di cui ha bisogno una procedura ( stack frame, activation record, procedure frame) viene esplicitamente allocato nello stack dal programmatore in una sola volta, all' inizio della procedura Lo spazio nello stack viene allocato sottraendo a $sp il numero di byte necessari. Esempio: addi $sp, $sp, -24 # alloca 24 byte nello stack # = 6 word 16 8

9 Gestione dello stack Al rientro da una procedura il record di attivazione viene rimosso (deallocato) incrementando $sp della stessa quantità di cui lo si era decrementato alla chiamata. Esempio: addi $sp, $sp, 24 # dealloca 24 byte nello stack E necessario liberare lo spazio allocato per evitare di esaurire la memoria disponibile (memoria heap) 17 Gestione dello stack Per inserire elementi nello stack sw $t0, offset($sp) # salvataggio di $t0 Per recuperare elementi dallo stack lw $t0, offset($sp) # ripristino di $t0 18 9

10 $sp Memoria Gestione dello stack $t0=45 $t1=12 Indirizzi alti addi $sp, $sp,-8 sw $t1, 4($sp) sw $t0, 0($sp) bassi alti $sp bassi 19 Lo stack Quando si chiama una procedura il contenuto dei registri non temporanei ($t0-$t9) utilizzati dal chiamato vanno: salvati nello stack all inizio dell'esecuzione della procedura ripristinati alla fine Esempio ( P.H. 2.7 p. 81): int somma_algebrica (int g, int h, int i, int j) { int f; f = (g + h) - (i + j); return f; } 20 10

11 Esempio (cont.) # g,h,i e j associati a $a0,, $a3; # f associata ad $s0 # il calcolo di f richiede 3 registi: $s0, $t0, $t1 # necessario salvare i 3 registri nello stack # esempio: somma_algebrica: addi $sp,$sp,-12 # alloca nello stack # lo spazio per i 3 registri sw $t1, 8($sp) # salvataggio di $t1 sw $t0, 4($sp) # salvataggio di $t0 sw $s0, 0($sp) # salvataggio di $s0 21 Esempio (cont.) Memoria indirizzi alti $sp prima (dopo) l attivazione $sp $t1 $t0 $s0 indirizzi bassi 22 11

12 Esempio (cont.) # g,h,i e j associati a $a0,, $a3; add $t0, $a0, $a1 # $t0 <- g + h add $t1, $a2, $a3 # $t1 <- i + j sub $s0, $t0, $t1 # f <- $t0 - $t1 add $v0, $s0, $zero # restituisce f copiandolo # nel reg. di ritorno $v0 # ripristino del vecchio contenuto dei registri # estraendoli dallo stack lw $s0, 0($sp) # ripristino di $s0 lw $t0, 4($sp) # ripristino di $t0 lw $t1, 8($sp) # ripristino di $t1 addi $sp, $sp, 12 # deallocazione dello stack # per eliminare 3 registri jr $ra #ritorno al prog. chiamante 23 Lo stack Per evitare di salvare inutilmente il contenuto dei registri, i registri sono divisi in due classi: registri temporanei: $t0,, $t9 $f4,.. $f11, $f16,.., $f19 il cui contenuto non è salvato dal chiamato nello stack; registri non-temporanei: $s0,, $s7 ($f20,, $f31) salvati nello stack e ripristinati Nell'esempio precedente: dato che il chiamante non si aspetta che $t0 e $t1 siano preservati durante la chiamata a procedura, si possono eliminare due store e due load. E' necessario salvare e ripristinare $s0 perché il chiamante si aspetta che tale registro non venga modificato 24 12

13 Convenzioni uso dei registri Nome Numero Utilizzo $zero 0 costante 0 $at $v0 - $v1 $a0 - $a riservato all assembler valori di ritorno argomenti $t0 - $t temp.neo non preservato $s0 - $s7 $t8 - $t9 $k0 - $k temporaneo preservato temp.neo non preservato riservato per il kernel $gp 28 pointer to global area $sp 29 stack pointer $fp 30 frame pointer $ra 31 return address 25 Convenzioni uso dei registri Registri usati per le operazioni floating point Nome $f0-$f3 $f4-$f11 $f12 - $f15 $f16 - $f19 $f20 - $f31 Utilizzo Valori di ritorno da procedura Registri temporanei (non salvati) Argomenti di una procedura Registri temporanei (non salvati) Registri salvati 26 13

14 Procedure foglia - chiamante Procedura foglia è una procedura che non contiene al suo interno chiamate ad altre procedure non serve salvare $ra (perchè nessuno altro lo modifica) Nel caso di procedure foglia, il chiamante salva nello stack: i registri argomento e i registri temporanei di cui vuole preservare il contenuto ($a0-$a3, $t0-$t9,...) Eventuali argomenti aggiuntivi da passare al chiamato oltre a quelli che possono essere contenuti nei registri $a0-$a3 27 Procedure foglia - chiamato Nel caso di procedure foglia, il chiamato alloca nello stack: I registri non temporanei che vuole utilizzare ( $s0-$s7) Strutture dati locali (es: array, matrici) e le variabili locali che non sono associate a registri Lo stack pointer $sp è aggiornato di conseguenza; alla fine i registri vengono ripristinati e lo stack pointer riportato al valore che aveva prima della chiamata 28 14

15 Record di attivazione procedure foglia Memoria indirizzi alti $sp prima (dopo) l attivazione $sp Registri $s salvati Variabili locali indirizzi bassi 29 Convenzioni per il salvataggio dell ambiente Riassunto convenzione del MIPS: per ottimizzare il numero di accessi alla memoria, il chiamante e il chiamato salvano solo i registri di un particolare gruppo il chiamante, se vuole che siano preservati, salva i registri temporanei $t0-$t9 ($f4-$f11, $f16-$f19), i registri argomento $a0-$a3 ( $f12-$f15) eventuali argomenti aggiuntivi il chiamato salva nello stack $ra; se li usa, i registri $s0-$s8 ($f20-$f31) e strutture dati locali (es: array, matrici) e variabili locali

16 Struttura di una procedura Ogni procedura ha: un prologo Salvataggio dell'ambiente un corpo Esecuzione della procedura vera e propria un epilogo Ripristino dell'ambiente 31 Prologo Definizione di un nome-etichetta per la procedura (es: proc_name:) Determinazione della dimensione del record di attivazione Per determinare la dimensione del record di attivazione si deve stimare lo spazio per: registri per variabili locali registri interi da salvare registri floating-point da salvare altri registri particolari 32 16

17 Prologo Allocazione dello spazio sullo stack: aggiornare il valore di $sp: addi $sp,$sp,-dim_record_attivaz # lo stack pointer viene decrementato # della dimensione prevista per il # record di attivazione Salvataggio dei registri per i quali è stato allocato spazio nello stack: sw reg,dim_record_attivaz-n($sp) N (N >= 4) viene incrementato di 4 ad ogni salvataggio 33 Esempio prologo Record di attivazione di 16 byte : addi $sp,$sp,-16 sw $s0, 12($sp) sw $s1, 8($sp) sw $s2, 4($sp) sw $ra, 0($sp) $sp prima (dopo) $sp $s0 $s1 $s2 $ra 34 17

18 Corpo della procedura Stesura delle istruzioni per l'esecuzione delle funzionalità previste dalla procedura 35 Epilogo Ripristino dei registri salvati: lw reg, dim_record_attivaz - N($sp) Rimozione dello spazio allocato sullo stack: addi $sp,$sp,dim_record_attivaz Restituzione del controllo al chiamante: jr $ra 36 18

19 Esempio epilogo Record di attivazione di 16 byte : lw $s0, 12($sp) lw $s1, 8($sp) lw $s2, 4($sp) lw $ra, 0($sp) addi $sp,$sp, 16 $sp prima (dopo) $sp $s0 $s1 $s2 $ra 37 Procedure annidate e ricorsive PH 2.7 Appendice A

20 Procedure annidate e ricorsive Procedure annidate: richiamano al loro interno altre procedure Devono salvare nello stack un ambiente più ampio : l'indirizzo di ritorno la procedura chiamata all'interno di un'altra riscrive il contenuto di $ra Procedure ricorsive: contengono una chiamata a se stesse al loro interno Devono salvare nello stack l'indirizzo di ritorno eventuali risultati intermedi 39 Chiamato - Salvataggio del return address Problema: il registro $ra memorizza un solo valore alla volta dopo il primo jal, $ra punta qui fa: fa: jal jal fb fb li li $v0, $v0, syscall fb: fb: jal jal fc fc jr jr $ra $ra fc: fc: jr jr $ra $ra 40 20

21 Chiamato - Salvataggio del return address Problema: il registro $ra memorizza un solo valore alla volta $ra non punta più qui! dopo il secondo jal, $ra punta qui fa: fa: jal jal fb fb li li $v0, $v0, syscall? fb: fb: jal jal fc fc jr jr $ra $ra fc: fc: jr jr $ra $ra non può ritornare poichè l'originale $ra è perso! 41 Chiamato - Salvataggio del return address Problema: il registro $ra memorizza un solo valore alla volta Soluzione: salvare/ripristinare il registro $ra (usando lo stack) all'ingresso/uscita della funzione salvare significa che $ra può essere modificato fa: fa: jal jal fb fb li li $v0, $v0, syscall fb: fb: # push push $ra $ra fc: fc: # push push $ra $ra jal jal C # pop pop in in $ra $ra jr jr $ra $ra # pop pop in in $ra $ra jr jr $ra $ra rendendo possibile il ritorno dalla funzione! 42 21

22 Chiamante - Salvataggio registri Problema: la funzione chiamata può usare registri $t0-$t9 che il chiamante vuole preservare lw lw $t0, $t0, a jal jal fun fun # $t0 $t0 è stato stato # cambiato! add add $t0, $t0, $t0, $t0, $v0 $v fun: fun: # usa usa $t0 $t0 lw lw $t0, $t0, x jr jr $ra $ra 43 Chiamante - Salvataggio registri Problema: la funzione chiamata può usare registri $t0-$t9 che il chiamante vuole preservare Soluzione: salva/ripristina registri nello lo stack lw lw $t0, $t0, a # push push $t0 $t0 jal jal func func # pop pop $t0 $t0 # $t0 $t0 è stato stato # preservato add add $t0, $t0, $t0, $t0, $v0 $v0 func: func: # usa usa $t0 $t0 lw lw $t0, $t0, x jr jr $ra $ra 44 22

23 Convenzioni chiamata a funzione Chiamante salva i registri temporanei nello stack (se li vuole riusare ) salva i valori degli argomenti nello stack (se li vuole riusare ) Chiamato salva $ra nello stack salva registri $s0 alloca le variabili locali nello stack chiama la funzione con l'istruzione jal 45 23

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

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

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

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

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

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

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

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

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

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

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 per la chiamata a procedure

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

Dettagli

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

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

Architettura degli STACK. Dott. Franco Liberati

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

Dettagli

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

MIPS Instruction Set 2

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

Dettagli

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

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

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

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

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

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

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

Dettagli

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

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

Dettagli

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

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

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

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

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

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

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

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

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

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

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

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

Dettagli

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

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

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

Subroutine in linguaggio macchina: collegamento e passaggio dei parametri. Sottoprogrammi: richiami Corso di Calcolatori Elettronici I Subroutine in linguaggio macchina: collegamento e passaggio dei parametri Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Introduzione a MIPS64 (II parte)

Introduzione a MIPS64 (II parte) Introduzione a MIPS64 (II parte) Chiamate di Sistema syscall n Utilizzate come interfaccia col sistema operativo, funzioni diverse (n = 0..5) Sono simili alle chiamate exit(), open(), close(), read(),

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

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

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

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

Dettagli

20. Gestione della memoria. Andrea Marongiu Paolo Valente

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

Dettagli

Procedure annidate. Università degli studi di Milano

Procedure 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

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

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

Architettura degli. Assemblatore Nomenclatura MARS. Dott. Franco Liberati

Architettura degli. Assemblatore Nomenclatura MARS. Dott. Franco Liberati Architettura degli Elaboratori Assemblatore Nomenclatura MARS Dott. Franco Liberati Assemblatore Introduzione Argomenti della lezione Nomenclatura Registri Istruzioni e pseudoistruzioni Architettura degli

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

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

Spazio di indirizzamento virtuale

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

Dettagli

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

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

Dettagli

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

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

Fondamenti di Informatica T. Linguaggio C: Stack e Ricorsione

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

Dettagli

Record di Attivazione

Record di Attivazione Record di Attivazione La macchina virtuale Record di attivazione di funzioni e procedure Record di attivazione 1 LA MACCHINA VIRTUALE DEL C MODELLO A TEMPO DI ESECUZIONE Aree di memoria: Area del codice

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

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

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

Dettagli

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

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

Laboratorio 6 - MIPS 2

Laboratorio 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

Dettagli

FUNZIONI: IL MODELLO A RUN-TIME!

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

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

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico Architettura degli Elaboratori e Laboratorio Matteo Manzali Università degli Studi di Ferrara Anno Accademico 2016-2017 Syscall Le syscall (chiamate di sistema) sono un insieme di servizi di sistema invocabili

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

Allocazione dinamica della memoria

Allocazione dinamica della memoria Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Allocazione dinamica della memoria Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135

Dettagli

MECCANISMI PER IL PASSAGGIO DEI PARAMETRI

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

Dettagli

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

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

MIPS! !

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

Dettagli

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

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

Dettagli

FUNZIONI: IL MODELLO A RUN-TIME

FUNZIONI: 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 si

Dettagli

Realizzazione delle strutture di controllo in Assembly

Realizzazione delle strutture di controllo in Assembly Realizzazione delle strutture di controllo in Assembly In Assembly non esistono le strutture potenti offerte da un HLL, ma è possibile renderle con le istruzioni di controllo Assembly Strutture di controllo

Dettagli

Stringhe di caratteri

Stringhe 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

Dettagli

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

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

Dettagli

Corso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica

Corso 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

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

Fondamenti di Informatica B

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

Dettagli

Eccezioni. Università degli Studi di Milano Corso di Laurea in Informatica, A.A

Eccezioni. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2018-2019 Eccezioni Turno A Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135 Milano (MI) Ufficio S242 nicola.basilico@unimi.it

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

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

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

Dettagli

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola 68000. Ultima modifica: 10 Maggio 2005. Autore: Daniele Paolo Scarpazza. Per segnalare eventuali difficoltà o problemi,

Dettagli

p = 7. E = bias + p = = E = s e m

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

Dettagli

Architettura degli. Esercizi sullo STACK. Dott. Franco Liberati

Architettura degli. Esercizi sullo STACK. Dott. Franco Liberati Architettura degli Elaboratori Esercizi sullo Dott. Franco Liberati Esercizio proposto per casa Si consideri la funzione f definita su interi f(x) = f(x-2) 2 f(1) = 14 f(0) = 10 Si realizzi un programma

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

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

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

Dettagli

Il linguaggio assembly

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

Dettagli

Passaggio di Parametri per Valore o Indirizzo

Passaggio di Parametri per Valore o Indirizzo Passaggio di Parametri per Valore o Indirizzo Come in C, l assembler permette di passare un dato per valore (copia) o per indirizzo, nel secondo caso rendendo modificabile il dato stesso da dentro una

Dettagli

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

Modi di indirizzamento

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

Dettagli

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

FUNZIONI: IL MODELLO A RUN-TIME

FUNZIONI: 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 si

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

Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo. Prof. Andrea Sterbini

Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo. Prof. Andrea Sterbini Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Argomenti della lezione - Il simulatore MARS - Le strutture di controllo - Esempi

Dettagli