I programmi Assembler e Linker
|
|
|
- Amanda Ippolito
- 9 anni fa
- Visualizzazioni
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 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
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 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 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
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 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 Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull
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
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 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)
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 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 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
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 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
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 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
[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
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 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 [email protected] 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
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 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. 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 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 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 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
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 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 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 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
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 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. La complessità dipende dal linguaggio sorgente. Compilatore: traduce
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 linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio
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 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 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
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
