I programmi Assembler e Linker

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "I programmi Assembler e Linker"

Transcript

1 Testo di riferimento: [Congiu] (pg ) 11.a I programmi Assembler e Linker Produzione del software Istruzioni, direttive, simboli, ecc. Processo di produzione del software Analisi del problema Progettazione del programma Definizione dei moduli software Progettazione singoli moduli Documentazione Scrittura del programma Scrittura dei moduli Traduzione e collaudo di ciascun modulo Costruzione dell intero programma Collaudo del programma 1

2 Sistema di sviluppo 2 Un programma Text Editor Per la scrittura e la modifica del testo sorgente Un programma Assemblatore Traduce il testo sorgente in modulo oggetto Un programma Linker Costruisce il programma eseguibile Un programma Debugger Esegue il programma sotto controllo del programmatore Scrittura di un programma 3 Editing Assembl. Collegam. moduli Collaudo

3 La programmazione in linguaggio assembly 4 La traduzione in linguaggio macchina viene effettuata da un programma assemblatore (assembler). Risulta molto spesso naturale organizzare i diversi moduli sorgente sotto forma di subroutine. È possibile costruire un programma in cui solo alcuni dei moduli sono scritti in linguaggio assembler, essendosi usato, per gli altri, un linguaggio ad alto livello. Valutazione costi ed efficienza 5

4 Il programma assemblatore 6 Un modulo sorgente è costituito da istruzioni di due tipi: le istruzioni di macchina, le istruzioni per l assemblatore (direttive). I simboli nel linguaggio assembly 7 La traduzione effettuata dall assemblatore consiste nel sostituire i valori numerici al posto dei simboli con cui, nelle istruzioni assembly, è rappresentato il contenuto dei vari campi delle istruzioni di macchina. Oltre ai simboli propri del linguaggio assembly, in un modulo sorgente sono generalmente presenti anche altri simboli, introdotti dal programmatore: simboli che rappresentano indirizzi di memoria; simboli che rappresentano valori numerici che non sono indirizzi.

5 I simboli del programmatore: esempi Direttiva label: LOOP: MOVL (R0)+, (R2) 8 Direttiva di assegnazione: MASK = $FF00 Simboli: classificazione Simboli predefiniti (codici operativi, registri di CPU, ecc.) 9 Simboli definiti dal programmatore (indirizzi, costanti numeriche): locali (visibili solo nel modulo corrente): assoluti, da rilocare (se il loro valore dipende dalla posizione del codice in memoria); globali (visibili anche in altri moduli): assoluti, da rilocare; esterni (definiti in altri moduli sorgente).

6 Simboli: forward reference In alcune circostanze è indispensabile poter usare un simbolo in punti del programma che precedono quello in cui esso è definito (forward reference): JMP AVANTI AVANTI: 10 Risoluzione dei simboli Per risolvere i forward reference, l assemblatore opera in due passi: Primo passo: l assemblatore scandisce le istruzioni del modulo sorgente e prende in considerazione le direttive di definizione dei simboli; Secondo passo: l assemblatore scandisce di nuovo il modulo sorgente e gestisce le occorrenze dei simboli, cioè l uso dei simboli, per generare il codice sostituendo (ove possibile) a ciascun simbolo il valore che esso rappresenta. 11

7 Assemblatore: primo passo (1 di 4) Definizioni dei simboli: simboli predefiniti 12 Tabella dei simboli predefiniti (TSP) ricerca del simbolo in TSP Assemblatore: primo passo (2 di 4) simboli locali Tabella dei simboli locali (TSL) 13 (S, V, T) TSL

8 Assemblatore: primo passo (3 di 4) simboli globali Tabella dei simboli globali (TSG) 14 (S, V, T) TSG Assemblatore: primo passo (4 di 4) simboli esterni Tabella dei simboli esterni (TSE) 15 (S, -) TSE

9 Assemblatore: secondo passo (1 di 3) Vengono esaminati i riferimenti ai simboli, cioè quei punti del modulo sorgente in cui i simboli vengono usati. In corrispondenza di ciascun riferimento simbolico l assemblatore intraprende una ricerca del simbolo nelle diverse tabelle per sostituirlo con il valore (provvisorio per i simboli da rilocare). I valori da rilocare vanno individuati, ad es. inserendo un puntatore ad essi in un apposita tabella che potremmo chiamare: Lista degli Elementi da Rilocare (LER). Per i simboli esterni la sostituzione non può essere effettuata ed è demandata al linker. 16 Assemblatore: secondo passo (2 di 3) 17 Si possono presentare i seguenti casi: il simbolo è tra quelli predefiniti, il simbolo è locale, il simbolo è globale, il simbolo è esterno.

10 Assemblatore: secondo passo (3 di 3) simbolo azione 18 predefinito locale globale esterno ricerca in TSP e inserzione del valore nel campo corrispondente dell istruzione. ricerca in TSL e inserzione del valore nel campo dell istruzione. se valore è da rilocare, aggiunta alla LER un puntatore al valore inserito. ricerca in TSG e inserzione del valore nel campo dell istruzione se T= da rilocare, aggiunta alla LER un puntatore al valore inserito. ricerca in TSE e inserzione nell elemento della TSE di un puntatore alla posizione in cui andrà inserito il valore associato al simbolo. Il modulo oggetto 19

11 Il programma linker (1 di 2) 20 Il programma linker (2 di 2) Per costruire il programma eseguibile, il linker: 1. valuta l estensione di memoria occupata da ciascun modulo per stabilirne l indirizzo iniziale; tramite gli indici contenuti nelle LER aggiorna, modulo per modulo, i valori da rilocare sommando ad essi il valore dell indirizzo iniziale del modulo stesso; 3. infine, risolve i riferimenti esterni.

12 Esempio: modulo 1 22 Esempio: modulo 2 23

13 Esempio: modulo 3 24 Preambolo della RSI (sequenza di polling):.ext AD1, SAD1 ; simboli esterni ; sequenza di polling JR AD1, SAD1 ; attiva la routine SAD1 ; se in AD1 è READY=1 Assemblaggio del modulo 1 25

14 Listing del modulo 1 26 Modulo oggetto 1 (1 di 2) 27

15 Modulo oggetto 1 (2 di 2) 28 Assemblaggio del modulo 2 29

16 Listing del modulo 2 30 Modulo oggetto 2 (1 di 2) 31

17 Modulo oggetto 2 (2( 2 di 2) 32 Assemblaggio del modulo 3 33.EXT AD1, SAD1 JR AD1, SAD1

18 Listing del modulo 3 34 Modulo oggetto 3 35

19 Programma eseguibile (1 di 2) 36 Programma eseguibile (2 di 2)

20 Fine 11.a I programmi Assemblatore e Linker

Il linguaggio Assembly

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

Dettagli

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Calcolatori Elettronici Parte VIII: linguaggi assemblativi 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à

Dettagli

Parte VII. Traduzione e Collegamento

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

Dettagli

Linguaggi, compilatori e interpreti

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

Dettagli

Elementi di programmazione

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à

Dettagli

Linguaggi di Programmazione

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

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull

Dettagli

Introduzione al linguaggio assembly MC68000

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

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Linguaggi di Programmazione

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

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

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

Dettagli

Linguaggi di programmazione

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é

Dettagli

I Linguaggi di Programmazione

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

Dettagli

Introduzione al linguaggio assembly

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

Dettagli

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

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

Dettagli

Il linguaggio di programmazione Python

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])

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di

Dettagli

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini [http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 2: Prime Istruzioni -Concetti Fondamentali

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

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

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

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Introduzione alla programmazione. Walter Didimo

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

Dettagli

Unità Didattica 2 I Linguaggi di Programmazione

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

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Unità di apprendimento 6. Dal problema al programma

Unità di apprendimento 6. Dal problema al programma Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 1 Conosciamo gli algoritmi e i linguaggi In questa lezione impareremo: cos è un problema come affrontarlo come descrivere

Dettagli

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

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

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

Dettagli

Richiami: Ciclo di sviluppo e ASIM

Richiami: Ciclo di sviluppo e ASIM Richiami: Ciclo di sviluppo e ASIM Corso Calcolatori Elettronici 2 Prof. Nicola Mazzocca Ing. Alessandra De Benedictis Programmi e linguaggio macchina Un programma è una sequenza di istruzioni che rappresentano

Dettagli

Introduzione. Informatica B. Daniele Loiacono

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

Dettagli

Introduzione alla programmazione strutturata

Introduzione alla programmazione strutturata FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Problema Algoritmo Programma Progettista Programmatore Progetto Programma Esecutore Computer Comittente Utente Dal problema all algoritmo Problema Risolutore ed esecutore Algoritmo

Dettagli

Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa.

Il Modello di un Compilatore. La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. Il Modello di un Compilatore La costruzione di un compilatore per un particolare linguaggio di programmazione e' abbastanza complessa. La complessità dipende dal linguaggio sorgente. Compilatore: traduce

Dettagli

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Prof. ELIO TOPPAO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio Toppano

Dettagli

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

Dettagli

Introduzione al Calcolo Scientifico

Introduzione al Calcolo Scientifico Introduzione al Calcolo Scientifico Francesca Mazzia Dipartimento di Matematica Università di Bari Francesca Mazzia (Univ. Bari) Introduzione al Calcolo Scientifico 1 / 14 Calcolo Scientifico Insieme degli

Dettagli

LINGUAGGI DI ALTO LIVELLO

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

Dettagli

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

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

Dettagli

STORIA E CARATTERISTICHE

STORIA E CARATTERISTICHE IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori

Dettagli