Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Puntatori in C e C++.
in un programma Assembler
Procedure In assembler.
Procedure e funzioni A. Ferrari.
PUNTATORI Introduzione
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
SPIM Esercizi. Esercizio 1 – il comando li Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
SPIM Esercizi. Esercizio 7 – load/store Il codice deve: Inserire in memoria la word 0x a Leggere questo dato e inserirlo in s0 Sommarci 5 Salvare.
Anno accademico Le classi di memorizzazione.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Laboratorio di informatica: ASSEMBLER
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
eliana minicozzi linguaggi1a.a lezione2
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Gestione delle subroutine
Caratteristiche principali dell’architettura del processore MIPS
Il Linguaggio Macchina
Heap allocation e garbage collector di Oberon Algoritmo Quick Fit e garbage collector mark and sweep.
Approfondimento delle classi
memoria gestita staticamente:
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Le funzioni a tempo di esecuzione
FUNZIONI: IL MODELLO APPLICATIVO 1) Valutazione, nellenvironment corrente, del simbolo che denota il nome della funzione; 2) Valutazione, nellenvironment.
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.
Architettura degli Elaboratori II (canale P-Z) Linguaggi e moduli
Introduzione al linguaggio assemby del microprocessore a parte
Architettura degli elaboratori
I vettore interruzioni
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
Unità Didattica 3 Linguaggio C
Introduzione al linguaggio assembly del microprocessore a parte
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
2000 Prentice Hall, Inc. All rights reserved. Attivazione di funzioni La chiamata/attivazione di funzione viene indicata citando il nome della funzione.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Università di Pavia - corso di Calcolatori Elettronici C code: L1:g = g + A[i]; i = i + j; if (i != h) goto L1; MIPS code: L1:add $t1, $s3, $s3# $t1.
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
1 Università di Pavia - corso di Calcolatori Elettronici PROGETTO DI UN SISTEMA BASATO SU  P PROBLEMA REALE SVILUPPO HARDWARESVILUPPO SOFTWARE INTEGRAZIONE.
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Calcolatori Elettronici Assemblatore, Linker e Loader
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Programmazione Assembly
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
L’esecuzione dei programmi
SPIM Esercizi. Esercizio 1 – il comando ‘li’ Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
FUNZIONI: IL MODELLO A RUN-TIME 1) creazione di una nuova attivazione (istanza) del servitore 2) allocazione di memoria per i parametri e per le variabili.
Esercitazione 4 Chiamate di procedure Claudia Raibulet
Esercizio 14 – chiamata di una procedura Il codice deve: Passare due parametri alla procedura ‘salva’ Questa procedura deve salvare i due parametri nel.
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Convenzioni chiamate a procedure Riassunto Pratico.
1 System Call ancora Vediamo passo passo come funziona una SC.
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Come esegue le istruzioni il microprocessore Un’istruzione è sempre composta da più operazioni elementari.
Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene l’indirizzo di un’altra variabile, si dice.
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Transcript della presentazione:

Chiamate a Procedure

Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura possa recuperarli trasferire il controllo alla procedura allocare le risorse (di memorizzazione dei dati) necessarie alla procedura effettuare la computazione della procedura mettere i risultati in un posto accessibile al chiamante restituire il controllo al chiamante

Chiamata semplice (jal) La procedura A chiama la procedura B. La procedura B non chiama nessun altra procedura A:.... jal B … B:.... jr $ra 0x $ra=0x $ra -> registro di ritorno per tornare al punto di origine

Chiamata con passaggio parametri La procedura A chiama la procedura B passandogli 3 parametri La procedura B esegue la somma dei tre parametri, restituisce il risultato ad A e non chiama nessun altra procedura $ra -> contiene lindirizzo di ritorno $a0 - $a3 -> quattro registri argomento per il passaggio dei parametri $v0 - $v1 -> due registri valore per la restituzione dei valori

Esempio.text __start: Li $s0, 2 Li $s1, 3 Li $s2, 4 move $a0, $s0 move $a1, $s1 move $a2, $s2 jal somma Move $s3, $v0 Somma: add $t0, $a0, $a1 Add $t0, $t0, $a2 Move $v0, $t0 Jr $ra

Convenzione utilizzo dei registri Vedere appendice A -> $t0 (temporanei) il cui contenuto può essere modificato durante la chiamata ad altre procedure -> $s0 il cui contenuto non deve essere modificato durante la chiamata ad altre procedure -> $ra

Utilizzo dello stack lo stack cresce verso gli indirizzi di memoria inferiori Il registro stack pointer $sp ($29) punta all'indirizzo dell'ultima parola in stack gli elementi in stack sono raggiunti mediante indirizzi composti dallo stack pointer e da un offset positivo Es. lw $t0 4($sp) Tutto lo spazio in stack di cui ha bisogno una subroutine deve essere esplicitamente allocato in una sola volta deve essere multiplo di due parole

Lo spazio nello stack viene allocato sottraendo allo stack pointer la dimensione dello stack Es. sub $sp,24 -> sono disponibili le seguenti 6 locazioni. 0($sp) 4($sp) 8($sp) 12($sp) 16($sp) 20($sp) Al ritorno da una subroutine il record di attivazione viene deallocato incrementando lo stack pointer della stessa quantità di cui lo si era decrementato Gli elementi sono "pushed" nello stack mediante la loro memorizzaziore ad un offset positivo rispetto allo stack pointer Es. sw $ra,20($sp) e vengono "popped" dallo stack leggendo dalla stessa locazione Es. lw $ra,20($sp) 20($sp) 16($sp) 12($sp) 8($sp) 4($sp) 0($sp)

Subroutine non Foglia Quando deve chiamare unaltra procedura, devono allocare almeno 24 bytes di spazio in stack 4 parole per i registri $a0-$a3 1 parola per l'indirizzo di ritorno una parola per mantenere l'allineamento alla doppia parola Il record di attivazione di una subroutine contiene quindi spazio per $a0-$a3 (per le subroutines chiamate) argomenti passati alle funzioni chiamate registri general purpose da salvarsi spazio per variabili locali allocate dalla subroutine

Esempio di uso dello stack La procedura A: riceve 5 parametri di ingresso scalari (4 nei registri ed 1 in stack) chiama a sua volta altre subroutines (B, C, D, E), con differente numero di parametri scalari; la chiamata con massimo numero di parametri è per una subroutine che riceve in ingresso 7 parametri scalari ha bisogno di salvare, per il suo funzionamento interno, 4 registri floating point ha bisogno di salvare, per il suo funzionamento interno, 5 registri general purpose utilizza 16 parole di spazio in stack per memorizzarvi le sue (di A) variabili locali