Top Banner
Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Anno Accademico 2013/2014
25

Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Mar 16, 2019

Download

Documents

vuxuyen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Calcolatori ElettroniciParte VIII: linguaggi assemblativi

Prof. Riccardo TorloneUniversita di Roma Tre

Anno Accademico 2013/2014

Page 2: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Linguaggi di Programmazione

Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore leggibilità Facilità di documentazione Minore controllo dell’efficienza

Linguaggi a basso livello Minore espressività Minore produttività Peggiore leggibilità Difficoltà di documentazione Pieno controllo dell’efficienza

Page 3: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Costi di Sviluppo ed Efficienza del Software

Approccio Misto: isolare le parti critiche del programma e codificare solo quelle in linguaggio assemblativo

Il 10% del codice è responsabile del 90% del tempo di esecuzione

I tempi di esecuzione vengono abbattuti nella fase di tuning, che riguarda ora solo una piccola parte del codice

Page 4: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Vantaggi del linguaggio assemblativo

Può servire per ottimizzare una applicazione (ma solo seguendo l’approccio misto)

E’ a volte necessario se le risorse sono limitate (microcontrollori - applicazioni embedded)

E’ utile alla comprensione dei compilatori E’ molto utile alla comprensione dell’architettura di un

calcolatore

Page 5: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Traduzione

Condotta una tantum in modo statico in un tempo precedente all’esecuzione

Il Programma sorgente è scritto in un linguaggio simbolico, orientato all’utente

Il Programma Oggetto: Esegue le operazioni specificate dal programma sorgente È scritto in linguaggio macchina e quindi è direttamente

eseguibile Il programma sorgente costituisce i dati del programma

traduttore, il programma oggetto ne è il risultato dell’esecuzione

PROGRAMMASORGENTE

TRADUTTORE• Compilatore• Assemblatore

PROGRAMMAOGGETTO

Page 6: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Interpretazione

L’interpretazione viene effettuata ogni volta che il programma viene eseguito

Non viene generato nessun programma oggetto L’interprete esegue direttamente le istruzioni del programma

sorgente Soluzione più semplice da realizzare potenzialmente inefficiente Esempi: BASIC, PROLOG, SQL,...

PROGRAMMA SORGENTE

INTERPRETE

SISTEMA DI ELABORAZIONE(Livello del Sistema Operativo)

Page 7: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Linguaggi Assemblativi (es. Pentium)

Corrispondenza uno ad uno con le istruzioni macchina Codici simbolici ed etichette associate ad indirizzi Pseudoistruzioni dichiarative per la definizione di etichette

e per l’allocazione di spazio di memoria Il traduttore è detto assemblatore e la traduzione

assemblaggio

Page 8: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Lo stesso programma (N=I+J) in altri assembler

Page 9: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Pseudoistruzioni

Utilizzate nella parte dichiarativa di un programma in assembler Dichiarano etichette, costrutti, o esprimono direttive di assemblaggio Ad esse non corrispondono istruzioni nel programma oggetto

Page 10: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Macro Definizioni

Associano un nome ad un segmento di codice (macro definizione)

Il nome così definito può essere usato (più volte) nel corso del programma

Servono a rendere il programma più compatto (e più leggibile) La sostituzione della macro avviene staticamente in fase di

assemblaggio

Page 11: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Macro con Parametri

È possibile definire ed utilizzare anche macro con parametri La sostituzione dei parametri formali con gli argomenti attuali

viene effettuata staticamente in fase di assemblaggio A valle dell’assemblaggio, a sostituzione avvenuta, nel

programma oggetto non resta nessuna traccia delle macro, con o senza parametri

Page 12: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Differenze tra Macro e Procedure

Page 13: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Il Processo di Assemblaggio L’assemblatore traduce da linguaggio assemblativo a linguaggio

macchina Processo molto semplice salvo per le istruzioni con riferimenti

(salti) a etichette non ancora dichiarate (riferimenti in avanti) Assemblatori ad una passata

Traducono in un formato intermedio compatto Mettono la forma intermedia in una tabella Alla fine traduce il contenuto della tabella

Assemblatori a due passate Prima passata:

Calcola la lunghezza e la posizione delle istruzioni Genera una tavola dei simboli

Seconda passata: Tutti i riferimenti sono noti nella tavola dei simboli Genera il codice usando i valori della tavola

Page 14: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

La Prima Passata

Valuta la lunghezza di ciascuna istruzione Calcola il valore dell’ILC (Instruction Location Counter) Inserisce tutte le etichette nella Tavola dei Simboli, con i

corrispondenti valori di ILC Alla fine della passata i riferimenti in avanti sono noti

Page 15: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Tabella dei codici operativi

Viene mostrata una porzione Un elemento per ciascun codice simbolico del linguaggio La classe individua le combinazioni che seguono le stesse

regole

Page 16: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

La Seconda Passata

Sfrutta il prodotto della prima passata La Tavola dei Simboli fornisce l’indirizzo di tutte le

etichette Genera il codice, istruzione per istruzione, utilizzando la

tavola dei codici operativi che fornisce: La lunghezza delle istruzioni I codici operativi La classe delle istruzioni (che dipende dal tipo di operandi e dalle modalità di indirizzamento)

Page 17: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Possibili organizzazioni delle tabelle dei simboli

Page 18: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Collegamento e Caricamento

Procedure assemblate o compilate separatamente Il Collegatore (Linker) produce un unico modulo assoluto

pronto ad essere caricato Il Caricatore (Loader) definisce gli indirizzi finali e carica il

modulo assoluto in memoria centrale

Page 19: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Collegamento (Linking)

Ciascun modulo ha il suo spazio degli indirizzi Quando i moduli vengono collegati occorre:

traslare i loro spazi degli indirizzi risolvere tutti i riferimenti esterni (le chiamate tra moduli)

Page 20: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Aggiornamento degli Indirizzi

Page 21: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Struttura del Modulo Oggetto

Identification: nome, data, lunghezza delle varie parti Entry point table: simboli definiti nel modulo e riferibili

dall’esterno External reference table: simboli definiti in altri moduli e

riferiti dal modulo Relocation dictionary: indirizzi che devono essere rilocati

Page 22: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Collegamento statico e rilocazione dinamica

Diversi approcci possibili Uso di un registro di rilocazione Uso della tavola delle pagine

Page 23: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Collegamento Dinamico

È spesso troppo costoso collegare staticamente tutte le procedure

Alcune sono chiamate solo in circostanze inusuali (gestione di eccezioni)

Il collegamento può essere effettuato a tempo di chiamata (e solo se necessario)

In Multics ogni procedura ha a disposizione un Linkage Segment La prima invocazione di una procedura provoca una trap

Page 24: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

Collegamento Dinamico (2)

La trap attiva il Dynamic Linker che alloca in memoria virtuale la procedura chiamata e scrive l’indirizzo nel linkage segment

Alla ripresa la chiamata viene eseguita regolarmente Tutte le successive chiamate si svolgono normalmente

Page 25: Calcolatori Elettronici - dia.uniroma3.ittorlone/calcolatori/teoria8.pdf · Ad esse non corrispondono istruzioni nel programma oggetto. Macro Definizioni

DLL (Dynamic Link Library)

Soluzione adottata in ambiente Windows Una DLL può contenere sia procedure che dati (es. librerie grafiche) Più programmi condividono una DLL Risparmio di memoria centrale e di massa Semplicità di aggiornamento delle librerie Implicit linking: il programma è collegato alla DLL tramite una tabella

(import library), le DLL necessarie sono caricate in memoria Explicit linking: la DLL viene richiesta e caricata dinamicamente all’atto

della chiamata