Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Documenti analoghi
Parte VII. Traduzione e Collegamento

Linguaggi di programmazione. Parte VII. Traduzione e collegamento. Interpretazione. Traduzione

Parte VII. Traduzione e collegamento

Traduzione e interpretazione

Calcolatori Elettronici

Linguaggi di programmazione

Algoritmi, Strutture Dati e Programmi. UD 2.d: Linguaggi Procedurali

Il linguaggio Assembly

A c r h c i h te t t e t t u t r u a r d g e li el e abo b ra r t a o t ri Assemblatore

Linguaggi, compilatori e interpreti

Linguaggi, compilatori e interpreti

Compilatore (Compiler)

Corso di Architettura (Prof. Scarano) 10/05/2002

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

Informatica 1. 4 Programmazione e Sviluppo del software. ing. Luigi Puzone

Linguaggi di Programmazione

Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Università degli Studi di Cassino

I Linguaggi di Programmazione

Università degli Studi di Cassino e del Lazio Meridionale Corso di Calcolatori Elettronici Assemblatori, Linker Loader

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Elementi di programmazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

PROBLEMI E ALGORITMI

Il Software programmabili programma algoritmo

Corso di Architettura (Prof. Scarano) 09/04/2002

Unità Didattica 2 I Linguaggi di Programmazione

Introduzione. Informatica B. Daniele Loiacono

Introduzione al linguaggio assembly

Lezione 15 Il Set di Istruzioni (1)

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

I programmi Assembler e Linker

AMBIENTI DI PROGRAMMAZIONE

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Sistemi Operativi. Bruschi Martignoni Monga. Gestione della memoria. Sistemi multiprogrammati. Partizioni fisse Partizioni variabili Paginazione

Linguaggio di Riferimento: C

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Introduzione al linguaggio assembly MC68000

LINGUAGGI DI ALTO LIVELLO

Introduzione - aspetti generali dell informatica

Esecuzione di Programmi Esercitazione

Il linguaggio di programmazione Python

Elementi di programmazione

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Linguaggi di Programmazione

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

28/02/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 5 LA RAPPRESENTAZIONE DELLE ISTRUZIONI

Introduzione al C. InformaticaB. Daniele Loiacono

Il linguaggio Assembly

Introduzione alla programmazione. Walter Didimo

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Introduzione ai linguaggi assembly

COMPILAZIONE. Tarsformazione di linguaggi

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Traduzione ed Interpretazione

SISTEMA DI ELABORAZIONE

Perché il linguaggio C?

Architettura degli Elaboratori 01-Introduzione Introduzione

Traduzione ed Interpretazione. Queste sconosciute

la traduzione dei programmi ed introduzione a Java

Iniziare a programmare in C++

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Il sistema operativo

Macchine astratte, linguaggi, interpretazione, compilazione

Linguaggi, Traduttori e le Basi della Programmazione

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Linguaggi di alto livello, compilatori e interpreti

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

LINGUAGGI DI ALTO LIVELLO

Sistema Operativo. (hardware e software) della della macchina

Macchine astratte, linguaggi, interpretazione, compilazione

Linguaggi e moduli. Dott. Franco Liberati

Macchine astratte, linguaggi, interpretazione, compilazione

Laboratorio di Calcolo Linguaggi di programmazione

ASTRAZIONE ASTRAZIONE

Calcolatori Elettronici A a.a. 2008/2009

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate

Macchine Astratte. Definizione e tipi di implementazione

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

3. Strumenti per la programmazione software

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Introduzione al linguaggio assembly

Linguaggi di programmazione

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Lezione 16. Il Software di base

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)

Transcript:

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

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

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

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

Traduzione PROGRAMMA SORGENTE TRADUTTORE Compilatore Assemblatore PROGRAMMA OGGETTO 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

Interpretazione PROGRAMMA SORGENTE INTERPRETE SISTEMA DI ELABORAZIONE (Livello del Sistema Operativo) 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,...

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

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

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

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

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

Differenze tra Macro e Procedure

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

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

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

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)

Possibili organizzazioni delle tabelle dei simboli

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

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)

Aggiornamento degli Indirizzi

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

Collegamento statico e rilocazione dinamica Diversi approcci possibili Uso di un registro di rilocazione Uso della tavola delle pagine

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

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

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