CALCOLATORI ELETTRONICI Gestione delle subroutine.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

in un programma Assembler
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Estendere i linguaggi: i tipi di dato astratti
Procedure In assembler.
Strutture dati lineari
LS Tron Classe 4TC – as 2006/07 LORGANIZZAZIONE DEI PROGRAMMI UD. 8 p. 282.
Perché le interruzioni?
Definizione e tipi di implementazione
Generazione di Codice Intermedio
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Massa Laura Mela Enrica
1 Semantica Operazionale di un frammento di Java: lo stato.
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.
Introduzione alla programmazione
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
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.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Microprogrammazione Codice operativo.
CALCOLATORI ELETTRONICI II
CALCOLATORI ELETTRONICI
Esercizio Esame Un processore PD32 è interfacciato a due periferiche di input A e B, e ad un DMAC il quale puo’ gestire trasferimento di dati da B verso.
Dal busy-wait allinterrupt Tecniche di interazione con periferiche di I/O finora studiate sono: Polling Busy-waiting Entrambe nella categoria sincrona.
Gestione delle subroutine
Esercizio Temperatura Una stanza e monitorata da 4 sensori di temperatura, i quali sono pilotati da un PD32. Questultimo controlla costantemente che il.
Il Linguaggio Macchina
1 Generazione codice Daniela Briola Lorena Bellino.
Architettura dei computer. Motori per lesecuzione di istruzioni Quello che i computer possono fare –eseguire deterministicamente istruzioni per elaborare.
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.
Programmazione in Java
CALCOLATORI ELETTRONICI II
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
I vettore interruzioni
Architettura del calcolatore
Alcune Istruzioni per la gestione dellI/O (Classe 7) Per la destinazione D0 sono ammessi tutti i tipi di indirizzamento tranne quello immediato. Per la.
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
Sia TAPE una periferica di gestione di nastri magnetici in grado di acquisire/fornire dati a 8 bit, e sia CD una periferica di masterizzazione in grado.
Unità centrale di processo

Informatica A.A. 2009/2010 Parte 2 L’Elaboratore Corso A: Prof. Stefano Berardi Corso B: Prof. Ugo de’ Liguoro
Calcolatori Elettronici Il Processore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Procedure e Macro.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
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
CALCOLATORI ELETTRONICI
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Sistemi Elettronici Programmabili
MICROPROCESSORI Un processore è un circuito integrato in grado di effettuare operazioni di calcolo o di elaborazione dell'informazione Il circuito contiene.
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.
Concetti Fondamentali sulla Programmazione
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
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Il calcolatore Stefano Cagnoni e Monica Mordonini
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 Informatica Applicata Introduzione Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Ing. Saverio De.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Transcript della presentazione:

CALCOLATORI ELETTRONICI Gestione delle subroutine

SUBROUTINES / 1 Vantaggi delle subroutines In maniera analoga alle funzioni/metodi dei linguaggi ad alto livello, anche in assembly le subroutines garantiscono una maggiore semplicità, modularità e riusabilità del software. Inoltre riducono il consumo di memoria necessario per la memorizzazione del codice, nel caso in cui un determinato insieme di istruzioni debba essere richiamato più volte durante lelaborazione.

SUBROUTINES / 2 Salto a sottoprogramma Listruzione di salto a subroutine (JSR) permette di saltare da un programma – programma principale – ad un altro programma – sottoprogramma. Esempio JSR moltiplicazione ;salta al sottoprogramma moltiplicazione Lesecuzione del sottoprogramma termina con listruzione RET, con la quale si ritorna ad eseguire il programma principale, o meglio il programma chiamante.

SUBROUTINES / 3 JSR A RET Programma principale Sottoprogramma A JSR A 1. chiamata 1. risposta 2. chiamata 2. risposta

JMP e JSR / 1 La sintassi di JSR (Jump To Subroutine) è la stessa dellistruzione di salto incondizionato JMP, cioè: JSR dove dest è lindirizzo di memoria della prima istruzione della subroutine espresso sotto forma di numero binario a 32 bit o di riferimento simbolico(label).

JMP e JSR / 2 A differenza dellistruzione JMP, il microprogramma associato allistruzione JSR, prima di rimpiazzare il contenuto del PC con lindirizzo, deve memorizzarne il valore in memoria. In questo modo, al termine della subroutine, lesecuzione può riprendere dallistruzione successiva alla JSR. Larea di memoria preposta alla memorizzazione degli indirizzi di ritorno delle subroutines deve permettere di gestire efficientemente anche situazioni più complesse, in cui i sottoprogrammi chiamano a loro volta altri sottoprogrammi (nested subroutines). Differenza tra JMP e JSR

SUBROUTINES ANNIDATE JSR A RET Programma principale Sottoprogr. A JSR A RET Sottoprogr. B JSR B RET Sottoprogr. C JSR C

STACK / 1 La gestione dei sottoprogrammi è basata su una struttura dati chiamata stack (pila), gestita con una tecnica LIFO (Last In First Out): gli elementi vengono prelevati a partire dallultimo che è stato memorizzato. Loperazione di inserimento di un elemento alla sommità (top) dello stack è chiamata push, mentre loperazione inversa è chiamata pop.

STACK / 2 Le operazioni di PUSH e POP, sebbene non disponibili nel set di istruzioni del PD32, vengono comunque implementate come pseudoistruzioni di movimento dati. Le pseudoistruzioni sono non sono implementate a livello hardware, ma sono messe a disposizione dallassemblatore che provvede a mapparle nelle istruzioni del microprocessore equivalenti.

GESTIONE STACK PD32 / 1 Nel PD32 lo stack è costituito da longword e ad esso è associato un particolare registro detto SP (Stack Pointer) che nel PD32 coincide con il registro R7. Tale registro punta sempre alla cima (top) dello stack. Per ragioni storiche, nel PD32 lo stack cresce verso indirizzi di memoria decrescenti. Sia S lindirizzo iniziale dello stack (base), allora gli n elementi presenti sono memorizzati nelle locazioni consecutive: S, S-4, S-8,…,S-4*n STACK elem.2 byte 2 S BASE S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 elem.1 byte 4 LSB elem.1 byte 3 elem.1 byte 2 elem.1 byte 1 MSB elem.2 byte 4 LSB elem.2 byte 3 elem.2 byte 1 MSB S-8 R7 TOP

GESTIONE STACK PD32 / 2 Come detto in precedenza le istruzioni PUSH e POP non sono vere e proprio istruzioni che appartengono al set del PD32, bensì sono istruzioni che il compilatore traduce in particolari MOV. PUSH: inserisce elemento e in pila S BASE S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S R7 e_b4 e_b3 e_b2 e_b1

GESTIONE STACK PD32 / 2 Come detto in precedenza le istruzioni PUSH e POP non sono vere e proprio istruzioni che appartengono al set del PD32, bensì sono istruzioni che il compilatore traduce in particolari MOV. POP: estrae lelemento e dalla pila S BASE S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-4 R7 e_b4 e_b3 e_b2 e_b1

STACK & PD32 / 2 Le pseudoistruzioni per la gestione dello stack Ripristina lo Status Register con la longword presente in cima allo stack. Viene tradotta come: MOVTOSR (R7)+ - POPSR Estrae dallo stack una longword e la pone nella locazione indicata dalloperando D. Viene tradotta come: MOVL (R7)+, D DPOP Inserisce lo Status Register in cima allo stack. Viene tradotta come: MOVRFRSR -(R7) - PUSHSR Inserisce in cima allo stack una longword indirizzata dalloperando sorgente S. Viene tradotta come: MOVL S, -(R7) SPUSH COMMENTOOP.PSEUDO- ISTRUZIONE

ESEMPIO PUSH PRIMA DI ESEGUIRE PUSH R6… FC BASE F8 TOP F8 R PC R FC BASE F F8 R PC R F4 TOP … E DOPO

ESEMPIO POP PRIMA DI ESEGUIRE POP R5…… E DOPO FC BASE F PC FFFFFFFF R F4 TOP F4 R FC BASE TOP F PC R F8 R7

STACK E SUBROUTINE Listruzione JSR inserisce (PUSH) in cima allo stack il valore del PC, ovvero lindirizzo di ritorno della subroutine. In maniera analoga, listruzione RET estrae dalla cima dello stack una longword che memorizza allinterno del PC. Nella successiva fase di fetch sarà quindi caricata nellIR listruzione che segue la JSR. Lo stack è inoltre utilizzato dalla subroutine chiamata per salvare i registri che saranno utilizzati e quindi sovrascritti, così da poterne ripristinare il valore originale prima di eseguire il RET. Questa operazione assicura che la funzione chiamante trovi i registri inalterati una volta terminata lesecuzione della subroutine. (OPERAZIONE MOLTO UTILE!!!!!!!)

Direttive di definizione variabili Sintassi: label dl/dw/db n {,n j } Dichiara una variabile di nome label inizializzata al valore n. Eventuali altri numeri specificati oltre il primo sono allocati consecutivamente in memoria a partire dallindirizzo associato a label. Tale indirizzo è scelto dallassemblatore! var1DW 4 var1 è un place-holder per una word collocata in memoria in una locazione scelta dallassemblatore ed inizializzata a 4. var2DL 4, 22h, 3 alloca 3 longwords inizializzate a 4, 22h e 3. var2 punta alla prima locazione

Utilizzo subroutine mondo reale 1.Implementazione di chiamate a funzioni / metodi 2.Interruzione asincrona del flusso di esecuzione di un programma 3.Implementazione di porzioni di codice per la gestione di eventi (Gestione driver ) ….un milione di altri usi……