Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2015-16 Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo.

Slides:



Advertisements
Presentazioni simili
Linux examples of Buffer overflow attacks
Advertisements

Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Dalla scrittura all’esecuzione
Procedure In assembler.
DIS - Dipartimento di Informatica e Sistemistica Calcolatori Elettronici II Programmazione C/Assembler per i processori ARM Prof. A. Mazzeo Dipartimento.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C
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.
Laboratorio di informatica: ASSEMBLER
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione 1, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli.
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Allocazione dinamica della memoria
Eliana minicozzi linguaggi L1 Lezione3.
eliana minicozzi linguaggi1a.a lezione2
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Gestione delle subroutine
Struttura dei sistemi operativi (panoramica)
Approfondimento delle classi
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Algoritmi e Programmazione Avanzata
Programmazione Avanzata
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
CODIFICA Da flow-chart a C++.
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
INTERFACCIAMENTO ASSEMBLY - C++
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.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
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.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Vettori, indirizzi e puntatori Finora abbiamo usato gli indirizzi nel chiamare  la funzione scanf()  le altre funzioni per riferimento Tuttavia la vera.
Vettori (a una dimensione)
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
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.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
L’esecuzione dei programmi
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.
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
Convenzioni chiamate a procedure Riassunto Pratico.
Cos’è un sistema operativo ?
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.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
Corso di Informatica Applicata Introduzione Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Ing. Saverio De.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Transcript della presentazione:

Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo della memoria Procedure innestate Uso dello stack

Convenzioni assembly: nomi e usi dei registri Nome SimbolicoNumeroUso $zero0Costante 0 $at1Assembler temporary $v0-$v12-3Functions and expressions evaluation $a0-$a34-7Arguments $t0-$t78-15Temporaries $s0-$s716-23Saved Temporaries $t8-$t924-25Temporaries $k0-$k126-27Reserved for OS kernel $gp28Global pointer $sp29Stack pointer $fp30Frame pointer $ra31Return address Appendice A Hennessy-Patterson Sez. A.6 Usati da assembler, compilatore, sistema operativo Secondo specifiche convenzioni …da trattare con cautela se si programma in assembly!!! A.A Procedure (2)

Registri temporanei “salvati” e “non salvati” Se una procedura usa registri, cosa succede del contenuto lasciato nei registri dal chiamante? Convenzioni: registri $s e $t CONVENZIONI su uso dei registri $t e $s I registri $t (“temporary”) non sono salvati dalla procedura Il chiamante non si può aspettare di trovare immutati i contenuti dei registri $t dopo una chiamata a procedura I contenuti dei registri $t devono essere salvati dal chiamante prima della chiamata a procedura I registri $s (“saved”) sono salvati dalla procedura Il chiamante ha il diritto di aspettarsi che i contenuti dei registri $s siano immutati dopo una chiamata a procedura Se la procedura usa i registri $s deve salvarne il contenuto all’inizio e ripristinarlo prima del ritorno Dove salvare il contenuto dei registri $s? Uso dello stack A.A Procedure (2)

Procedure innestate Procedure “foglia” e “non foglia” Una procedura foglia NON chiama altre procedure Una procedura non foglia chiama altre procedure Cosa succede se una procedura ne chiama un’altra? Si perde il contenuto di $ra della prima chiamata????? Procedure recursive???? Bisogna che una procedura “non foglia” salvi il contenuto di $ra e lo ripristini prima del ritorno Dove salvare il contenuto dei registri $s? Uso dello stack A.A Procedure (2)

Convenzioni di uso della memoria Convenzioni standard utilizzate da compilatori, assemblatori, linker...e programmatori Appendice A Hennessy-Patterson sez. A5 Fig. A.5.1 A.A Procedure (2)

Uso dello stack (complessivo) Parametri oltre i primi 4 (che sono passati nei registri) Appendice A Hennessy-Patterson sez. A5 Fig. A.5.1 Nelllo stack viene allocato spazio pert tutti i dati “locali” Il cui “lifetime” è limitato all’esecuzione della procedura $sp viene modificato all’inizio della procedura e ripristinato alla fine. Viene usato come registro base per accedere ai dati locali A.A Procedure (2)

Uso dello stack (solo salvataggio registri) Cosa fa la procedura? “Alloca” spazio nello stack Decrementa $sp per lasciare in stack lo spazio necessario al salvataggio (1 word per ciascun registro da salvare) (ricordare che lo stack cresce “verso il basso” Salva $ra Salva eventuali altri registri usando $sp come registro base..... Ripristina i registri Incrementa $sp per riportarlo alla situazione iniziale Jr $ra (ritorno dalla procedura) Approfondimenti: Parametri passati in stack “Procedure frame”: l’insieme dei dati locali ($fp) Come indirizzare variabili locali? (per fortuna ci pensa il compilatore...) Uso dello stack per valutazione di espressioni etc. Per capire bene: procedure recursive (cfr. esempi) A.A Procedure (2)