Il linguaggio assembly
|
|
- Angelo Turco
- 6 anni fa
- Visualizzazioni
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
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
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:
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:
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
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
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
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
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:
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
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
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
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:
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
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
DettagliConvenzioni 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
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
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
DettagliArchitettura 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
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
DettagliMIPS 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
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
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
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
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
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
DettagliProcedure 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 )
DettagliAddendum: 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
DettagliMacchina 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
DettagliIl 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
DettagliARM: 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
DettagliProgrammi 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
DettagliProcedure: 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);
DettagliCorso 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
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
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:
DettagliIl 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
DettagliOttenere 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)
DettagliProgrammazione 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
DettagliFRAMEWORK 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
DettagliSubroutine 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
DettagliSubroutine 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
DettagliIntroduzione 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(),
DettagliInvocazione 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
DettagliUniversità 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
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
Dettagli20. 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,
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
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
DettagliProgrammazione 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
DettagliArchitettura 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
DettagliLa 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
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
DettagliSpazio 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 (){
DettagliProgrammazione 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,
DettagliGestione 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
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
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
DettagliRecord 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
DettagliCalcolatori 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
DettagliCorso 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
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
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
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
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
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
DettagliArchitettura 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
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
DettagliAllocazione 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
DettagliMECCANISMI 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
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
DettagliIl 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
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
DettagliProcedure 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/
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 si
DettagliRealizzazione 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
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
DettagliLABORATORIO 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
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
DettagliIl 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
DettagliFondamenti 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
DettagliEccezioni. 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
DettagliLinguaggio 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
DettagliLinguaggio 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
DettagliEsercizio 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,
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
DettagliArchitettura 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
DettagliIl 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
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
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...
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
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
DettagliModi 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,
DettagliMemoria: 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
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 si
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
DettagliArchitettura 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