Il linguaggio Assembly

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il linguaggio Assembly"

Transcript

1 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 Linguaggio simbolico, vicino al linguaggio macchina, che definisce: Uno mnemonico per ogni istruzione in L.M. Un formato per le linee di programma Formati per la specifica della modalità di indirizzamento Direttive Formato istruzioni label Mnemonico Operandi Commento Sequenza di caratteri alfanumerici Codice operativo o pseudocodice Operandi separati da virgole Ignorato dall assemblatore

2 Assemblatori Traduttori linguaggio assembly linguaggio macchina Problema dei riferimenti futuri b label label lw M Soluzione 1 - assemblatori ad 1 passo La traduzione delle linee di codice contenenti i simboli futuri viene ritardata Svantaggi Grossa richiesta di memoria Difficoltà a produrre il listato Soluzione 2 - assemblatori a 2 passi Nel primo passo viene compilata la tabella dei simboli, nel secondo viene effettuata la traduzione

3 Tabelle Vengono utilizzate dall assemblatore per gestire la corrispondenza simboli oggetti statiche Codici operativi Pseudo-codici stringhe di bit azioni Tabelle dinamiche simboli macro strlen: li $v, # Inizializza la lunghezza in $v lw $t,eol # Pone in $t il terminatore di stringa loop: lb $t1,($a) # Carica un carattere in $t1 beq $t1,$t,brk # Esce se è quello di fine stringa beqz $t1,brk # oppure se il byte è vuoto addi $v,$v,1 # Conteggia un carattere valido addi $a,$a,1 # Incrementa il puntatore alla stringa b loop # Ripete il ciclo brk: jr $ra # Ritorna al chiamante

4 [x464] x342 ori $2, $, [x468] x3c111 lui $1, 497 [x46c] x8c2838 lw $8, 56($1) [x47] x889 lb $9, ($4) Istruzioni non completate [x474] x1128 beq $9, $8, [x478] x112 beq $9, $, [x47c] x2421 addi $2, $2, 1 [x48] x2841 addi $4, $4, 1 [x484] x41fffb bgez $ -2 [loop-x484] brk: jr $31 Istruzione Istruzione non ancora tradotta Simbolo Valore indirizzo tipo strlen x464 loop x47 x484 bgez brk x474 beq Tabella dei simboli brk x478 beq PLC E una variabile interna usata dall assemblatore per avere traccia degli indirizzi generati per memorizzare istruzioni o dati (Program Location Counter). Per fare riferimento al suo valore in un istruzione si usa l asterisco *. PseudoCodici e Direttive Forniscono all'assemblatore istruzioni relative all'assemblaggio del programma. La loro interpretazione non genera codice, ma provoca lo svolgimento di particolari azioni da parte dell assemblatore.

5 Principali direttive.align n.ascii str.asciiz str.byte b1,,bn.data <addr>.double d1,,dn.extern sym.float f1,,fn.globl sym.half h1,,hn.kdata <addr>.ktext <addr>.set noat.set at.space n.text <addr>.word w1,,wn Costanti Numeriche 12 decimale $2F esadecimale Costanti Carattere Delimitate da doppi apici. Generano la sequenza di byte corrispondenti ai codici ASCII dei relativi caratteri mesg:.asciiz ciao mesg:.byte $43,$49,$41,$4F,

6 Linking (1) Divisione del programma in moduli da gestire separatamente Il linker permette di collegare più moduli oggetto, assemblati separatamente, in modo da costituire un unico modulo eseguibile finale Sorgente 1 ASSEMBLER Oggetto 1 Sorgente 2 ASSEMBLER Oggetto 2 LINKER eseguibile Sorgente 3 ASSEMBLER Oggetto 3 Linking (2) Il modulo oggetto generato dall assemblatore contiene tutte le informazioni necessarie al linker per operare il collegamento. In particolare, vengono forniti i simboli pubblici (es. procedure esportate dal modulo) ed i riferimenti esterni (es. chiamate a procedure definite in altri moduli). Identificatore Tabella dei simboli pubblici Tabella dei riferimenti esterni Codice Dati Tabella di rilocazione Informazioni di debug

7 Linking (3) Il linker deve risolvere due problemi: rilocazione dei singoli moduli risoluzione dei riferimenti esterni Passi eseguiti dal linker: Costruisce una tabella contenente la lunghezza dei moduli oggetto. In base alla tabella, assegna un indirizzo di caricamento ad ogni modulo oggetto Aggiorna tutti gli indirizzi rilocabili Aggiorna i riferimenti a procedure esterne Linking (4) Per realizzare i punti 3 e 4, il linker utilizza le informazioni prodotte dall assemblatore e contenute nei moduli oggetto. In particolare, vengono costruite due tabelle generali, che raccolgono i simboli pubblici ed i riferimenti esterni di tutti i moduli. E in questa fase che vengono scoperti eventuali errori di collegamento. tabella dei simboli pubblici tabella dei riferimenti esterni Simbolo pubblico Rif. esterno In alcuni casi (linking separato dal loading) la rilocazione effettuata non è quella definitiva ed il modulo prodotto è ancora rilocabile. In questo caso, il linker produce una tabella dei riferimenti rilocabili, memorizzata nel modulo eseguibile e utilizzata dal loader.

8 1 hex Text Allocazione di memoria del MIPS $sp 7fff ffff hex Stack Dynamic data $gp 1 8 hex Static data pc 4 hex Reserved Header del file oggetto A di testo (codice) dati Informazioni di rilocazione Tabella dei simboli Nome Dim. del testo Dim. dei dati 4 4 Procedura A Istruzione lw $a, ($gp) jal (X) Etichetta X B Tipo istruzione lw jal - - Dipendenza X B

9 Header del file oggetto B Nome Dim. del testo Procedura B 2 16 di testo (codice) dati Dim. dei dati Istruzione sw $a1, ($gp) jal (Y) Informazioni di rilocazione 4 Tipo istruzione lw jal Dipendenza Y A Tabella dei simboli Etichetta Y A - - File eseguibile di testo (codice) Dim. del testo Dim. dei dati Istruzione lw $a, 8($gp) jal sw $a1, 82($gp) jal 4 dati 1 (X) 1 2 (Y)

10 Aggancio moduli HLL-moduli assembly HLL COMPILER Oggetto 1 LINKER Assoluto Assembly ASSEMBLER Oggetto 2 Moduli oggetto con la stessa struttura Condizioni necessarie: stesse convenzioni per la rappresentazione dei dati stesse convenzioni per il subroutine linkage Cose da sapere Rappresentazione dei dati Come sono rappresentati i vari tipi in HLL? Subroutine linkage Relazione nome procedura simbolo esterno Come sono salvati i parametri? In che ordine sono salvati i parametri? Come viene gestito il valore restituito dalle funzioni?

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

Il linguaggio Assembly del MIPS

Il linguaggio Assembly del MIPS Il linguaggio Assembly del MIPS Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio

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

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

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

Istruzioni di controllo del flusso

Istruzioni di controllo del flusso Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal

Dettagli

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

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

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I

Le procedure ricorsive Come eseguire un programma. Architettura degli Elaboratori e delle Reti, Turno I Le procedure ricorsive Come eseguire un programma Architettura degli Elaboratori e delle Reti, Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:

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

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

I programmi Assembler e Linker

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

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

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione

Dettagli

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 2007/2008 Francesco Tortorella Istruzioni di confronto Istruzione Significato slt $t1,$t2,$t3 if

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

1. L istruzione li $a0, è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita?

1. L istruzione li $a0, è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita? 1. L istruzione li $a0, 12345678 è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita? 2. Si descriva il formato IEEE 754 per la rappresentazione in

Dettagli

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. di Cassino e del Lazio Meridionale Corso di MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 201/201 Francesco Tortorella Istruzioni di confronto Istruzione

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware. 2. Spiegare i diversi tipi di indirizzamento usati dalle istruzioni del set

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F. Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/32 Linguaggio

Dettagli

Il linguaggio macchina

Il linguaggio macchina Il linguaggio macchina Istruzioni macchina (PH 2.4) Indirizzamento (PH 2.9) Costanti a 32-bit (PH 2.9) 1 Linguaggio macchina Le istruzioni in linguaggio assembly devono essere tradotte in linguaggio macchina

Dettagli

Il processore Motorola (MC68000)

Il processore Motorola (MC68000) LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 9 Prof. Rosario Cerbone [email protected] http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 Il processore Motorola 68000 (MC68000)

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica Calcolatori Elettronici Prof. Fabio Roli Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto

Dettagli

Esercitazione n. 3. Dott. Salvatore Pontarelli

Esercitazione n. 3. Dott. Salvatore Pontarelli Esercitazione n. 3 Dott. Salvatore Pontarelli Struttura di un modulo Assembly Assembly è il linguaggio che l ARM assembler (armasm) legge per produrre il codice oggetto. può essere: ARM assembly language

Dettagli

COMPILAZIONE. Tarsformazione di linguaggi

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

Dettagli

Perché il linguaggio C?

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

Dettagli

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO Programma diviso in due moduli: MA.ASM: programma pricipale e funzioni di utilità MB.ASM: sottoprogramma di elaborazione Primo modulo: MA.ASM EXTRN alfa: BYTE

Dettagli

Linguaggi di alto livello, compilatori e interpreti

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

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

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/20

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