Convenzioni chiamate a procedure Riassunto Pratico.

Slides:



Advertisements
Presentazioni simili
Creare un blog A cura di Marco Farina
Advertisements

Puntatori in C e C++.
Procedure In assembler.
Procedure e funzioni A. Ferrari.
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
Gestione della Memoria
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
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.
DATAWAREHOUSE - Microstrategy
STRUMENTI DI PRESENTAZIONE
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Caratteri e stringhe di caratteri
Laboratorio di informatica: ASSEMBLER
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
1La famiglia attraverso “scuola in chiaro” ha un importante strumento per scegliere la scuola in cui iscrivere il proprio figlio leggendo le informazioni.
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Gestione delle subroutine
Creazione di una classe virtuale e associazione di corsisti alla classe: indicazioni generali per gli e-tutor Introduzione.
Il Linguaggio Macchina
memoria gestita staticamente:
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Le funzioni a tempo di esecuzione
FUNZIONI... Una funzione permette di dare un nome a una espressione rendendola parametrica float f(){ return * sin(0.75); } float f1(int x) { return.
Esercizio 18 – Le eccezioni Creare un trap-handler che gestisca opportunamente le eccezioni 7 (Bus error durante accesso ad area dati/stack ) e 12 (overflow)
Alcune strategie per Word
Creiamo una cartella nel nostro hard disk dove andremo ad inserire le risorse che costituiranno i contenuti del sito. Apriamo il programma Dopo aver cliccato.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Ll Questionario Introduzione al software SAS (Parte 2) Metodi Quantitativi per Economia, Finanza e Management Esercitazione n°2.
Ereditarietà e Polimorfismo
Introduzione al linguaggio assemby del microprocessore a parte
Il MODULO PREVENTIVI fa parte dei moduli opzionali di ASPAN e serve a preventivare i costi di Nesting.
2. Formattare il floppy disk Attualmente, tutti i floppy in commercio sono già formattati, ma può capitare di dover eseguire questa operazione sia su.
RB-insert(T, z) // z.left = z.right = T.nil Insert(T, z) z.color = RED // z è rosso. Lunica violazione // possibile delle proprietà degli alberi // rosso-neri.
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
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.
Ho selezionate le femmine e gli obesi Altro esercizio come si valutano i dati selezionati.
Writer: Stili Modelli Lezione 03. Modelli di formato e modelli di documento Modelli di formato: Sono gli stili attribuiti al carattere, al paragrafo alle.
Gestione Anagrafica Organizzazione
GESTIONE DELLO SCRUTINIO DEL 1° QUADRIMESTRE
Prof. Giuseppe Boncoddo
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
Calcolatori Elettronici Il Processore (2)
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Sottoprogrammi e funzioni
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Algoritmi e Strutture Dati Strutture Dati Elementari.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
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.
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
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.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
1 System Call ancora Vediamo passo passo come funziona una SC.
Elaborazione Testi Elementi di Base
Lezione 14 Riccardo Sama' Copyright  Riccardo Sama' Excel: usare formule e.
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Come esegue le istruzioni il microprocessore Un’istruzione è sempre composta da più operazioni elementari.
EVENTI Gli eventi sono delle azioni che possono essere identificate da javascript. 1 - onMouseOver, che viene messo in atto quando l'utente fa scorrere.
Gli interrupt Richiesta di attenzione alla cpu. Viene generato un segnale detto di interrupt diretto alla cpu.
Impariamo ad usare Excel. Utilizzare l’interfaccia Avviare Excel e iniziare ad esplorare l'interfaccia per acquisire familiarità con esso… Non c'è modo.
Planet HT – Genova - Elisa Delvai
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Transcript della presentazione:

Convenzioni chiamate a procedure Riassunto Pratico

Procedura A chiama la procedura B Prima che la procedura A chiami la procedura B Ho bisogno di utilizzare qualche registro $s? Devo salvare il valore del registro $s nello stack prima di sovrascriverlo Ho qualche valore nei registri $t che mi interessa mantenere anche dopo la chiamata alla procedura B? Si -> devo salvare il valore contenuto in questi registri (dato che i $t possono essere sovrascritti dalla procedura B senza nessun tipo di salvataggio) Copio il valore contenuto in questi registri nei registri $s (che non possono essere sovrascritti dalla procedura B) Oppure salvo il valore di questi registri nello stack Devo salvare nello stack il valore del registro $ra (che contiene l’indirizzo di ritorno della procedura A) dato che verrà sovrascritto nel momento in cui chiamo la procedura B (con l’istruzione jal) Devo passare qualche parametro alla procedura B? Si, ma sono meno di 5 Inserisco i valori da passare nei registri $a Si, ma sono più di 4 Inserisco i primi 4 valori da passare nei registri $a Alloco n parole (n = numero di parametri da passare alla procedura B – 4) nello stack per i rimanenti parametri e inserisco i valori da passare Devo allocare 4 parole nello stack per la procedura B (questo è un “dovere” dovuto alle convenzioni usate) Chiamo la procedura B (jal B) Ritorno dalla procedura B La procedura B mi deve passare qualche valore di ritorno Si -> muovo i valore/i di ritorno contenuto/i nei registri $v in un registro diverso ($t generalmente) Ho salvato qualche registro $t prima della chiamata alla procedura perché mi interessava il suo valore? Si -> devo ripristinare il valore precedentemente salvato nello stack Termine della procedura A Ho utilizzato qualche registro $s? Si -> Ripristino il valore precedente dei registri $s che ho precedentemente salvato nello stack Ripristino il valore del registro $ra precedentemente salvato nello stack (perché sarà stato sovrascritto nel momento della chiamata alla procedura B) DeAlloco lo stack Salto alla procedura padre (jr $ra)

Procedura A chiama la procedura B Ho bisogno di utilizzare qualche registro $s? Devo salvare il valore del registro $s nello stack prima di sovrascriverlo E’ una procedura non foglia Ho qualche valore nei registri $t che mi interessa mantenere anche dopo la chiamata alle altre procedure? Si -> devo salvare il valore contenuto in questi registri (dato che i $t possono essere sovrascritti dalle altre procedure senza nessun tipo di salvataggio) Copio il valore contenuto in questi registri nei registri $s (che non possono essere sovrascritti dalle altre procedure) Oppure salvo il valore di questi registri nello stack Devo salvare nello stack il valore del registro $ra (che contiene l’indirizzo di ritorno alla procedura A) dato che verrà sovrascritto nel momento in cui chiamo le altre procedure (con l’istruzione jal) Devo passare qualche parametro alle altre procedure? (se chiamo più di una procedura tengo in considerazione la procedura che richiede più parametri) Si, in generale Devo salvare i registri $a che contengono i parametri passati dalla procedura A alla procedura B (perché verranno sovrascritti dai parametri da passare elle altre procedure) Li salvo nello stack della procedura A (rispettivamente nelle 4 parole allocate da quest’ultima per convenzione) Si, ma sono meno di 5 Inserisco i valori da passare nei registri $a Si, ma sono più di 4 Inserisco i primi 4 valori da passare nei registri $a Alloco n parole (n = numero di parametri da passare alla procedura che richiede più parametri – 4) nello stack per i rimanenti parametri e inserisco i valori da passare Devo allocare 4 parole nello stack per le altre procedure (questo è un “dovere” dovuto alle convenzioni usate) Chiamo le altre procedure (jal …) Ritorno dalle procedure Le procedure mi devono passare qualche valore di ritorno Si -> muovo i valore/i di ritorno contenuto/i nei registri $v in un registro diverso ($t generalmente) Ho salvato qualche registro $t prima della chiamata alle procedure perché mi interessava il suo valore? Si -> devo ripristinare il valore precedentemente salvato nello stack Termine della procedura B Ho utilizzato qualche registro $s? Si -> Ripristino il valore precedente dei registri $s che ho precedentemente salvato nello stack Ripristino il valore del registro $ra precedentemente salvato nello stack (perché sarà stato sovrascritto nel momento della chiamata alle altre procedure) Inserisco nei registri $v gli eventuali valori di ritorno per la procedura A DeAlloco lo stack Salto alla procedura padre (jr $ra)

Nota Attenzione: Lo stack va allocato all’inizio delle varie procedure e non può essere più modificato fino alla fine della procedura Conviene fare prima i conti di quante parole vi serviranno all’interno della procedura e poi scrivere le istruzioni all’inizio della procedura necessarie per allocare lo spazio richiesto Lo stack va de-allocato alla fine della procedura Lo stak deve essere allocato a multipli di 2 parole Eventualmente aggiungere una parola vuota di riempimento