I programmi Assembler e Linker

Размер: px
Начинать показ со страницы:

Download "I programmi Assembler e Linker"

Транскрипт

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

Подробнее

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à

Подробнее

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

Подробнее

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

Подробнее

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à

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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é

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее