I programmi Assembler e Linker



Похожие документы
Il linguaggio Assembly

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Parte VII. Traduzione e Collegamento

Linguaggi, compilatori e interpreti

Elementi di programmazione

Linguaggi di Programmazione

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Introduzione al linguaggio assembly MC68000

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

Linguaggi di Programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Linguaggi di programmazione

I Linguaggi di Programmazione

Introduzione al linguaggio assembly

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Il linguaggio di programmazione Python

Corso di Fondamenti di Informatica Linguaggi di Programmazione

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

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

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

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

Introduzione alla programmazione. Walter Didimo

Unità Didattica 2 I Linguaggi di Programmazione

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

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Unità di apprendimento 6. Dal problema al programma

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

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

Il calcolatore. Architettura di un calcolatore (Hardware)

Richiami: Ciclo di sviluppo e ASIM

Introduzione. Informatica B. Daniele Loiacono

Introduzione alla programmazione strutturata

Linguaggi di programmazione

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

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

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Introduzione al Calcolo Scientifico

LINGUAGGI DI ALTO LIVELLO

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

STORIA E CARATTERISTICHE

Транскрипт:

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

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

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

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.

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

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

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

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

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.

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

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; 21 2. 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.

Esempio: modulo 1 22 Esempio: modulo 2 23

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

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

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

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

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

Listing del modulo 3 34 Modulo oggetto 3 35

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

Fine 11.a I programmi Assemblatore e Linker