Calcolatori Elettronici Parte VIII: linguaggi assemblativi
|
|
|
- Emma Catalano
- 9 anni fa
- Visualizzazioni
Transcript
1 Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre
2 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
3 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
4 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
5 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
6 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,...
7 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
8 Lo stesso programma (N=I+J) in altri assembler
9 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
10 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
11 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
12 Differenze tra Macro e Procedure
13 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
14 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
15 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
16 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)
17 Possibili organizzazioni delle tabelle dei simboli
18 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
19 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)
20 Aggiornamento degli Indirizzi
21 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
22 Collegamento statico e rilocazione dinamica Diversi approcci possibili Uso di un registro di rilocazione Uso della tavola delle pagine
23 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
24 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
25 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
Parte VII. Traduzione e Collegamento
Parte VII Traduzione e Collegamento VII.1 Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore leggibilità Facilità di documentazione Minore controllo
Linguaggi di programmazione
Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché
Il linguaggio Assembly
Il linguaggio Assembly Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio Assembly
Linguaggi, compilatori e interpreti
Linguaggi, compilatori e interpreti 1 Il codice macchina Ciascun calcolatore ha un ampio insieme di istruzioni che è in grado di eseguire. Le istruzioni vengono rappresentate mediante sequenze di bit 001000100011
Linguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Linguaggi di Programmazione
Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni
DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di
I Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Elementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
Il Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
Unità Didattica 2 I Linguaggi di Programmazione
Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche
Introduzione. Informatica B. Daniele Loiacono
Introduzione Informatica B Cos è l informatica? q È la scienza che si occupa della rappresentazione dell informazione e della sua elaborazione e gestione " Si occupa dell informazione, che fa parte di
Lezione 15 Il Set di Istruzioni (1)
Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Un quadro della situazione Input/Output Sistema di Interconnessione Registri
AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
I programmi Assembler e Linker
Testo di riferimento: [Congiu] 10.1-10.5 (pg. 267 291) 11.a I programmi Assembler e Linker Produzione del software Istruzioni, direttive, simboli, ecc. Processo di produzione del software Analisi del problema
Cosa è un programma. Informatica di Base -- R.Gaeta 18
Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer
Introduzione al linguaggio assembly MC68000
Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly MC68000 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie
LINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani ([email protected])
Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema
Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina
Linguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
Introduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
COMPILAZIONE. Tarsformazione di linguaggi
COMPILAZIONE Tarsformazione di linguaggi Le fasi della compilazione File sorgente Compilazione File sorgente File sorgente File sorgente Compilazione Compilazione Compilazione Libreria di run-time File
ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)
1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Linguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
Lez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
Linguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
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 C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2
Sistema Operativo. (hardware e software) della della macchina
Sistema Operativo Senza Sistema Operativo (SO) un computer è solo un macchinario inutile... Il SO rende possibile la gestione, elaborazione e immagazinamento dell informazione. Il Il SO SO è il il software
Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri
Concetti di Base sulla Programmazione Prof.Ing.S.Cavalieri 1 La Programmazione Dato un problema INFORMATICO, programmare significa: Definire i dati in ingresso e il risultato che si vuole raggiungere Definire
Introduzione al linguaggio assembly
Corso di Calcolatori Elettronici I Introduzione al linguaggio assembly Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie dell Informazione
Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni
Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da
Lezione 16. Il Software di base
Lezione 16 Software di base Il Software di base Con il termine software di base si intende l insieme dei programmai che consentono ad un utente di eseguire operazioni base come costruire e mandare in esecuzione
