Gestione dello Stack nel MIPS

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Gestione dello Stack nel MIPS"

Transcript

1 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 di push) avviene decrementando $sp per allocare lo spazio ed eseguendo sw per inserire il dato Ex: salvare il registro $s0 nello stack addi $sp, $sp, -4 sw $s0, 0($sp) Il prelevamento di un dato nello stack (operazione di pop) avviene eseguendo lw ed incrementando $sp (per eliminare il dato), riducendo così la dimensione dello stack Es: prelevare la cima dello stack e salvarla in $s0 lw $s0, 0($sp) addi $sp, $sp, 4 gp-> PC-> 0x x x x x dati dinamici (heap) dati statici Segmento testo (istruzioni) riservata Procedure 1

2 Esempio: Allocazione e deallocazione stack.globl main leaf_example: addi $sp, $sp, -4# decrementa lo stack di 4 per salvare $s0 sw $s0, 0($sp) # push di $s0 nello stack # Here Other operation on registers and stack addi $v0, $s0, 1# restituisci s0+1 come risultato lw $s0, 0($sp) # pop di $s0 dallo stack addi $sp, $sp, 4 # incrementa lo stack jr $ra # ritorna alla procedura chiamante main: addi $s0, $zero, 1 jal leaf_example Procedure 2

3 Esempio: Allocazione e Deallocazione stack Procedure 3

4 Esempio: Allocazione e Deallocazione stack Procedure 4

5 Record di Attivazione e Stack Tutto lo spazio di cui ha bisogno una procedura (record di attivazione) viene esplicitamente allocato dal programmatore Lo spazio dello stack viene allocato sottraendo a $sp il numero di byte necessari addi $sp, $sp, -24 # alloca 6 parole nello stack Al rientro da una procedura, il record di attivazione viene rimosso (deallocato) dalla procedura stessa, incrementando $sp della stessa quantità di cui lo si era decrementato alla chiamata addi $sp, $sp, 24 # deall. 6 parole nello stack Procedure 5

6 Record di Attivazione e Stack (2) Allocazione dello stack prima (a), durante (b) e dopo (c) la chiamata di una procedura stack frame Il frame consiste nello spazio di memoria tra il registro frame pointer ($fp), che punta alla prima parola del frame, e lo stack pointer ($sp), che punta all ultima parola del frame Si può accedere ai dati tramite $fp $sp puo variare durante l esecuzione Procedure 6

7 Esempio uso frame pointer #Example Stack # Use of frame pointer #.globl main leaf_example: addi $fp, $sp, -4 # sp start at 7ffffdf8. The first available #location is the next 7ffffdf4 addi $sp, $sp, -24 # devono essere allocate 6 parole di memoria sw $s0, 0($fp) # push di $s0 nello stack # Here Other operation on registers and stack addi $v0, $s0, 1 # restituisci f come risultato lw $s0, 0($fp) # pop di $s0 dallo stack main: addi $sp, $sp, 24 # incrementa lo stack addi $fp, $zero, 0 jr $ra # ritorna alla procedura chiamante addi $s0, $zero, 1 jal leaf_example $sp $fp=$sp-4 $sp=$sp-24 7ffffdf8 7ffffdf4 7ffffdf0 Record di attivazione (Procedure Frame) 7ffffde0 Procedure 7

8 Convenzioni per il salvataggio dei registri/ambiente L esecuzione di una procedura non deve interferire con l ambiente chiamante I registri usati dalla procedura chiamante devono poter essere ripristinati al rientro della procedura chiamata Convenzioni adottate dal MIPS Per ottimizzare gli accessi alla memoria, la chiamante e la chiamata salvano sullo stack soltanto un particolare gruppo di registri La chiamante, se vuole che siano preservati, salva i registri $t0- $t9, i registri $a0-$a3 e passa eventuali argomenti aggiuntivi La chiamata salva $ra e registri $s0-$s7 (se li usa), e usa lo stack per le strutture dati locali (ad es. array, strutture) e le variabili locali Se serve anche $fp Preservato (dal callee) Registri saved: $s0-$s7 Registro stack pointer: $sp Registro return address: $ra Stack sopra lo stack pointer Non preservato (dal callee) Registri temporanei: $t0-$t9 Registri argomento: $a0-$a3 Registri di ritorno: $v0-$v1 Stack sotto lo stack pointer Procedure 8

9 Convenzioni di Chiamata a Procedura: Caller La procedura chiamante deve 1. Mettere i valori dei parametri da passare alla procedura chiamata nei registri $a0-$a3. Ulteriori argomenti sono inseriti nello stack (dopo 2). 2. Salva i registri Caller-saved. La chiamante, se vuole che siano preservati, inserisce i registri $t0-$t9, i registri $a0-$a3, $v0-$v1 (Caller-saved) nello stack 1. perche la procedura chiamata li usa senza salvarli 3. Utilizzare l istruzione jal per saltare alla procedura chiamata e memorizzare il valore di PC+4 nel registro $ra 4. Al ritorno ripristinare i registri salvati nella fase 2 Procedure 9

10 Convenzioni di Chiamata a Procedura: Callee Inizializzazione Ritorno La procedura chiamata deve 1. Allocare la memoria per lo stack-frame sottraendo da $sp il numero di byte necessari 2. Salvare i registri Callee-saved - $s0-$s7, $fp e $ra che verranno modificati dalla procedura stessa Perche la procedura chiamante si aspetta che siano preservati $fp solo se viene usato $ra solo se la procedura ne chiama altre 3. Impostare $fp = $sp+dimensione stack-frame-4 Solo se $fp viene usato 4. Eseguire il compito richiesto 5. Memorizzare il risultato nei registri $v0, $v1 6. Ripristinare i registri salvati nella fase 2 quelli effettivamente modificati 7. Deallocare lo stack-frame sommando a $sp la dimensione del frame 8. Restituire il controllo alla procedura chiamante con l istruzione jr $ra Procedure 10

11 Esempio di procedura foglia E una procedura che non ha annidate al suo interno chiamate ad altre procedure Non serve salvare nello stack $ra (perché nessun altro lo modifica) Codice C: int leaf_example(int g, int h, int i, int j) { } int f; f = (g+h) (i+j); return f; Assumiamo che le variabili g, h, i e j corrispondono a $a0- $a3 e f a $s0 Utilizzeremo i registri $t0 e $t1 per le somme parziali Procedure 11

12 Esempio di procedura foglia (2).globl main leaf_example: addi $sp, $sp, -4 # decrementa lo stack di 4 per salvare $s0 sw $s0, 0($sp) # push di $s0 nello stack 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 # restituisci f come risultato lw $s0, 0($sp) # pop di $s0 dallo stack addi $sp, $sp, 4 # incrementa lo stack jr $ra # ritorna alla procedura chiamante main: addi $s0, $zero, 1 addi $s1, $zero, 2 addi $a0, $zero, 5 addi $a1, $zero, 6 addi $a2, $zero, 4 addi $a3, $zero, 3 jal leaf_example Procedure 12

13 Esempio di procedura foglia (3).globl main leaf_example: # gestione stack add $t0, $a0, $a1 # $t0 = g + h add $t1, $a2, $a3 # $t1 = i + j sub $s0, $t0, $t1 # f = $t0 - $t1 # gestione stack add $v0, $s0, $zero # restituisci f come risultato jr $ra # ritorna alla procedura chiamante main: addi $s0, $zero, 1 addi $s1, $zero, 2 # Operazioni su $t0 e $t1 addi $a0, $zero, 5 addi $a1, $zero, 6 addi $a2, $zero, 4 addi $a3, $zero, 3 jal leaf_example # Operazioni su $t0 e $t1 Problema: Come devo fare se il chiamante (main) volesse preservare il contenuto di $t0 e $t1????? Procedure 13

14 Esempio di procedura foglia (3).globl main leaf_example: # gestione stack add $t0, $a0, $a1 # $t0 = g + h add $t1, $a2, $a3 # $t1 = i + j sub $s0, $t0, $t1 # f = $t0 - $t1 # gestione stack add $v0, $s0, $zero # restituisci f come risultato jr $ra # ritorna alla procedura chiamante main: addi $sp, $sp, -8 sw $t0, 4($sp) # push di $t0 nello stack sw $t1, 0($sp) # push di $t1 nello stack jal leaf_example lw $t1, 0($sp) # pop di $t1 dallo stack lw $t0, 4($sp) # pop di $t0 dallo stack addi $sp, $sp, 8 # incrementa lo stack Il chiamante deve esplicitamente preservare il contenuto dei rigistri tomporanei. E LA CONVENZIONE Procedure 14

15 Esempio (13) ## Procedure call to add 10 to input parameter.text.globl main main: addi $s0, $0, 5 add $a0, $s0, $0 # load $a0 with parameter to pass to callee procedure jal add10 # jump and link: return address saved in register $ra add $s1, $v0, $0 # value returned by callee procedure is in $v0 add $s0, $s1, $0 li $v0, 10 # load code for program end syscall # exit add10: addi $sp, $sp, Quali -4 # registri make vanno space preservati????? in stack to sw $s0, 0($sp) # save register for caller addi $s0, $a0, 10 # add 10 to input parameter add $v0, $s0, $0 # return value placed in register $v0 lw $s0, 0($sp) # restore register before returning to caller addi $sp, $sp, 4 # restore stack before returning to caller jr $ra # jump to return address to give control back to caller Procedure 15

16 Esempio (13) ## Procedure call to add 10 to input parameter.text.globl main main: addi $s0, $0, 5 add $a0, $s0, $0 # load $a0 with parameter to pass to callee procedure jal add10 # jump and link: return address saved in register $ra add $s1, $v0, $0 # value returned by callee procedure is in $v0 add $s0, $s1, $0 li $v0, 10 # load code for program end syscall # exit add10: addi $sp, $sp, -4 # make space in stack to sw $s0, 0($sp) # save register for caller addi $s0, $a0, 10 # add 10 to input parameter add $v0, $s0, $0 # return value placed in register $v0 lw $s0, 0($sp) # restore register before returning to caller addi $sp, $sp, 4 # restore stack before returning to caller jr $ra # jump to return address to give control back to caller Procedure 16

17 Esempio (14) Confronta uso di $sp e $fp in esempi 14-procCallsProg1Modified.asm uso stack in modo non pianificato 14-procCallsProg1Modified-preAlloc.asm pianifico dimensione e uso stack frame 14-procCallsProg1Modified-fp.asm uso frame pointer al posto dello stack pointer Procedure 17

18 $sp=$sp-4 $sp=$sp-8 $sp=$sp-4 $sp????? $s0 Record di $t0 attivazione (Procedure $t1 Frame) $t2 Procedure 18

19 $sp=$sp-16 $sp????? $s0 $t0 $t1 $t2 12($sp) 8($sp) 4($sp) 0($sp) Procedure 19

20 $fp=$sp+12 $sp=$sp-16 $sp????? $s0 $t0 $t1 $t2 12($sp) o 0($fp) 8($sp) o -4($fp) 4($sp) o -8($fp) 0($sp) o -12($fp) Procedure 20

21 Esempio (14-2) Quando va preservato $ra??? Quale $ra??? Procedure 21

22 Esempio (14-2) ## Procedure call to swap two array words.text $a0: indirizzo array $a1: elemento da scambiare.globl main main: la $a0, array # load $a0 with parameter(=array address) to pass to #callee procedure addi $a1, $0, 1 # load $a1 with parameter(= 0) to pass to callee procedure addi $sp, $sp, -4 # make space in stack to 1 sw $ra, 0($sp) # save #ra (return address) value though # there is no procedure that called the current one jal swap # jump and link: return address stored in register $ra lw $ra, 0($sp) # control comes back here from callee; restore $ra addi $sp, $sp, 4 # restore stack jr $ra # give control to calling procedure (default, there is none) # swap contents of elements $a1 and $a1+1 of the array that starts at $a0 # equivalent C code: swap: add $t1, $a1, $a1 # $t1 = 2*$a1 # swap(int v[], int k) add $t1, $t1, $t1 # $t1 = 4*$a1 # { add $t1, $a0, $t1 # $t1 = array + 4*$a1 # int temp; lw $t0, 0($t1) # $t0 = array[$a1] # temp = v[k]; lw $t2, 4($t1) # $t2 = array[$a1+1] # v[k] = v[k+1]; sw $t2, 0($t1) # array[$a1] = array[$a1+1] # v[k+1] = temp; sw $t0, 4($t1) # array[$a1+1] = array[$a1] # } jr $ra # jump to return address to give control back to caller.data array:.word 5, 4, 3, 2, 1 Procedure 22

23 Esempio (14-2) ## Procedure call to swap two array words.text $a0: indirizzo array $a1: elemento da scambiare.globl main main: la $a0, array # load $a0 with parameter(=array address) to pass to #callee procedure addi $a1, $0, 1 # load $a1 with parameter(= 0) to pass to callee procedure addi $sp, $sp, -4 # make space in stack to sw $ra, 0($sp) # save #ra (return address) value though # there is no procedure that called the current one jal swap # jump and link: return address stored in register $ra lw $ra, 0($sp) # control comes back here from callee; restore $ra addi $sp, $sp, 4 # restore stack jr $ra # give control to calling procedure (default, there is none) # swap contents of elements $a1 and $a1+1 of the array that starts at $a0 swap: add $t1, $a1, $a1 # $t1 = 2*$a1 2 add $t1, $t1, $t1 # $t1 = 4*$a1 array: add $t1, $a0, $t1 # $t1 = array + 4*$a1 lw $t0, 0($t1) # $t0 = array[$a1] lw $t2, 4($t1) # $t2 = array[$a1+1] sw $t2, 0($t1) # array[$a1] = array[$a1+1] sw $t0, 4($t1) # array[$a1+1] = array[$a1] jr $ra # jump to return address to give control back to caller.data.word 5, 4, 3, 2, 1 # equivalent C code: # swap(int v[], int k) # { # int temp; # temp = v[k]; # v[k] = v[k+1]; # v[k+1] = temp; # } Procedure 23

24 Esempio: Somma dei primi 100 numeri ## Program adds the first 100 positive integers ## and displays the result. # Variables: # $s1 - iterations counter # # $s4 - accumulator for sum $a0 - number of system service Procedure 24

25 Procedure 25

26 RICORSIONE Procedure 26

27 Esempio di procedura ricorsiva E una procedura che contiene una chiamata a se stessa al suo interno Occorre prestare attenzione al salvataggio nello stack dei registri che occorrono alla procedura chiamante (parametri di input, indirizzo di ritorno) Codice C: int fact(int n) { if (n < 1) return(1); else return (n * fact(n-1)); } Assumiamo che la variabile n corrisponde a $a0 Procedure 27

28 Esempio di procedura ricorsiva Per semplicità consideriamo prima la seguente versione Codice C: int fact(int n) { } int i=n, ris; if (i < 1) ris=1; else ris=i * fact(i-1); return ris; Quanti registri mi servono? i $s0 ris $s1 Cosa succede in C quando chiamo una procedura ricorsiva? Ad ogni chiamata corrisponde uno scope privato, ovvero il record di attivazione Da cosa è composto il mio record di attivazione? Quali registri dovrò salvare nello stack? $ra, $s0, $s1 Procedure 28

29 fact(n) (prima versione) fact: addi $sp, $sp, -12 # per salvare 3 registri nello stack sw $ra, 8($sp) # push di $ra nello stack sw $s0, 4($sp) # push di $s0 nello stack sw $s1, 0($sp) # push di $s1 nello stack add $s0, $0, $a0 # copia $a0 in $s0 add $s1, $0, $0 # ris=0; slti $t0, $s0, 1 # test se n < 1 beq $t0, $zero, Else # se n>= 1, vai a Else addi $s1, $0, 1 # se n<1 ris=1 addi $v0, $0, $s1 # $v0=ris=1 j Exit if (i < 1) ris=1; Else:addi $a0, $s0, -1 # if n >= 1 $a0=n-1 jal fact # chiama fact(n-1) mul $v0, $s0, $v0 # $v0=n*fact(n-1) Exit: lw $s1, 0($sp) # pop di $s1 dallo stack lw $s0, 4($sp) # pop di $s0 dallo stack lw $ra, 8($sp) # pop di $ra dallo stack addi $sp, $sp, 12 # dealloca stack jr $ra # ritorno alla procedura chiamante else ris=i * fact(i-1); Procedure 29

30 Esempio di procedura ricorsiva (3) Stack alla chiamata fact(0) nel caso in cui main chiama fact(4) stack Crescita dello stack $ra = 0x40004c $s0 = 0, $s1=0 $ra = 0x4000b0 $s0 = 4, $s1=0 $ra = 0x4000b0 $s0 = 3, $s1=0 $ra = 0x4000b0 $s0 = 2, $s1=0 $ra = 0x4000b0 $s0 = 1, $s1=0 fact(4) fact(3) fact(2) fact(1) fact(0) Procedure 30

31 Esempio di esecuzione fact(4) Procedure 31

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

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

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

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Chiamata a procedura PH cap. 2.7 e app. A.6 1 Chiamata a procedura in C int prod (int x, int y) { int out; out = x * y; return out; } f = f + 1; if (f == g) res = prod(f,g); else

Dettagli

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sottoprogrammi in linguaggio assembly del Motorola 68000

Sottoprogrammi in linguaggio assembly del Motorola 68000 Sottoprogrammi in linguaggio assembly del Motorola 68000 Daniele Paolo Scarpazza daniele.scarpazza@elet.polimi.it Politecnico di Milano Ultimo aggiornamento: 10 Maggio 2005 Bibliografia Sezioni 4.9, 5.6

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

Calcolatori Ele,ronici Lezione 6 17/11/2011. Emiliano Casalicchio

Calcolatori Ele,ronici Lezione 6 17/11/2011. Emiliano Casalicchio Calcolatori Ele,ronici Lezione 6 17/11/2011 Emiliano Casalicchio Emiliano.Casalicchio@uniroma2.it Argomen7 della lezione Progammazione Assembler Richiamo sull uso dei registri Uso della memoria Esempio1:

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

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

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

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

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

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

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

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

Calcolatori Ele,ronici Lezione del 15/11/2012. Emiliano Casalicchio

Calcolatori Ele,ronici Lezione del 15/11/2012. Emiliano Casalicchio Calcolatori Ele,ronici Lezione del 15/11/2012 Emiliano Casalicchio Emiliano.Casalicchio@uniroma2.it Argomen> della lezione Progammazione Assembler Richiamo sull uso dei registri Uso della memoria Esempio1:

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

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

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti Prof. Alberto Borghese Ing. Iuri Frosio Dipartimento di Scienze dell Informazione borghese,frosio@dsi.unimi.it Università degli Studi

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

7 May INTERRUPT ED ECCEZIONI I. Frosio

7 May INTERRUPT ED ECCEZIONI I. Frosio 1 INTERRUPT ED ECCEZIONI I. Frosio SOMMARIO Eccezioni ed interrupt Esempi Gestione SW delle eccezioni: i dettagli 2 CICLO DI ESECUZIONE DI UN ISTRUZIONE Fecth (prelievo istruzione dalla RAM) Decodifica

Dettagli

Record di Attivazione Cenni sulla ricorsione

Record di Attivazione Cenni sulla ricorsione MASTER Information Technology Excellence Road (I.T.E.R.) Cenni sulla ricorsione Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il modello a RUN-TIME

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

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

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

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

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

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

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

Richiami: v[i] e &v[i] Organizzazione della memoria. Esercizio 1. Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis

Richiami: v[i] e &v[i] Organizzazione della memoria. Esercizio 1. Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis Esercitazione di Calcolatori Elettronici Prof. Gian Luca Marcialis Corso di Laurea in Ingegneria Biomedica Corso di Laurea in Ingegneria Elettrica, Elettronica ed Informatica Capitolo 5 Linguaggio Assembly

Dettagli

15 April INTERRUPT ED ECCEZIONI I. Frosio

15 April INTERRUPT ED ECCEZIONI I. Frosio 15 April 2011 1 INTERRUPT ED ECCEZIONI I. Frosio SOMMARIO Eccezioni ed interrupt Esempi Gestione SW delle eccezioni: i dettagli 2 CICLO DI ESECUZIONE DI UN ISTRUZIONE Fecth (prelievo istruzione dalla RAM)

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

La gestione della memoria. Gestione della memoria. Uso della Memoria RAM

La gestione della memoria. Gestione della memoria. Uso della Memoria RAM La gestione della memoria Gestione della memoria Stack di attivazione, Heap Come il compilatore-interprete, organizza i dati necessari all esecuzione del programma. Alcuni aspetti organizzativi già visti

Dettagli

Architettura 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

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

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

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

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

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

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

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 -

L'INDIRIZZAMENTO NEL PROCESSORE MC PARTE 1 - L'INDIRIZZAMENTO NEL PROCESSORE MC 68000 - PARTE 1 - CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Modi di indirizzamento Tecniche di indirizzamento:

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

Procedure annidate. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

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

Dettagli

Assembly III SPIM: un ambiente di simulazione MIPS

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

Dettagli

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

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

Dettagli

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

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario La struttura delle istruzioni elementari: il linguaggio Macchina Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano Riferimento sul

Dettagli

Richiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis

Richiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis Esercitazione di Ing. Gian Luca Corso di Laurea in Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Richiami: v[i] e &v[i] v[i] è il valore dell elemento i nel vettore v; &v[i] è il suo indirizzo.

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

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

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

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

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

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

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

Dettagli

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

Dettagli

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7

Dettagli

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

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12 Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12 vitiello@dia.unisa.it http://www.dia.unisa.it/~avitiello Presentazione Corso di Architettura matricole congruo a 0: prof.

Dettagli

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7

Dettagli

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

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

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

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo

Dettagli