Il linguaggio Assembly

Documenti analoghi
Compilatore (Compiler)

Università degli Studi di Cassino e del Lazio Meridionale Corso di Calcolatori Elettronici Assemblatori, Linker Loader

Università degli Studi di Cassino

Modi di indirizzamento. Indicano come accedere all operando di interesse dell istruzione. Il MIPS ha 5 modi di indirizzamento:

Università degli Studi di Cassino

Corso di Architettura (Prof. Scarano) 10/05/2002

Calcolatori Elettronici

Introduzione al linguaggio assembly MC68000

Il linguaggio Assembly del MIPS

A c r h c i h te t t e t t u t r u a r d g e li el e abo b ra r t a o t ri Assemblatore

Linguaggi di programmazione. Parte VII. Traduzione e collegamento. Interpretazione. Traduzione

Parte VII. Traduzione e collegamento

Parte VII. Traduzione e Collegamento

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Algoritmi, Strutture Dati e Programmi. UD 2.d: Linguaggi Procedurali

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Introduzione al linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Introduzione ai linguaggi assembly

Linguaggi e moduli. Dott. Franco Liberati

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Fetch Decode Execute Program Counter controllare esegue prossima

Istruzioni di controllo del flusso

Istruzioni di trasferimento dati

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

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

Un quadro della situazione. Lezione 18 Il Set di Istruzioni (6) Dove siamo nel corso. Le operazioni e gli operandi del MIPS. Cosa abbiamo fatto

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

Università degli Studi di Roma La Sapienza

Linguaggi, compilatori e interpreti

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

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

Linguaggi, compilatori e interpreti

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Architettura degli. Assemblatore Nomenclatura MARS. Dott. Franco Liberati

Addendum: istruzioni linguaggio macchina. Università di Bergamo - corso di Calcolatori Elettronici 1

I programmi Assembler e Linker

Stringhe di caratteri

Linguaggi di programmazione

Calcolatori Elettronici

Gestione dei sottoprogrammi. temporaneo passaggio del controllo dal programma in esecuzione ad un sottoprogramma

Università degli Studi di Cassino

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

Dal sorgente all eseguibile I programmi Assembly

Introduzione al linguaggio assembly

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

Introduzione al linguaggio assembly

Il linguaggio Assembly

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

Architettura degli Elaboratori Lez. 3 ASM: Strutture di controllo. Prof. Andrea Sterbini

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

Architettura degli Elaboratori

Università degli Studi di Cassino

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

Università degli Studi di Cassino e del Lazio Meridionale

Linguaggio Assembly e linguaggio macchina

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

Linguaggio Assembly e linguaggio macchina

Architettura degli Elaboratori

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

Il linguaggio macchina

Il linguaggio macchina

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

FRAMEWORK PER L'ESECUZIONE DI APPLICAZIONI ASSEMBLY SUL MODELLO VERILOG DI UN SISTEMA DI ELABORAZIONE BASATO SUL PROCESSORE emips-sc

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Linguaggi di Programmazione

Il processore Motorola (MC68000)

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 13

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Macchina di Riferimento: argomenti

Linguaggio Assembly e linguaggio macchina

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

Istruzioni e linguaggio macchina

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

Fondamenti di Informatica B

Esercitazione n. 3. Dott. Salvatore Pontarelli

Linguaggio di Riferimento: C

Memoria: lettura, scrittura e indirizzamento

SECONDA PROVA INTERMEDIA DEL MODULO DI. 1 giugno 2017 NOME: COGNOME: MATRICOLA:

COMPILAZIONE. Tarsformazione di linguaggi

Architettura degli. Linguaggi di Programmazione Tipologie del Linguaggi di Programmazione Codice Eseguibile. Dott. Franco Liberati

Esame di Architetture Canale AL Prof. Sterbini 31/1/17

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

Perché il linguaggio C?

PASSI DI SVILUPPO DI UN PROGRAMMA: ESEMPIO

Linguaggi di alto livello, compilatori e interpreti

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

Assembly (3): le procedure

L ambiente di simulazione SPIM

Istruzioni e linguaggio macchina

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Linguaggi di Programmazione

Assembly (3): le procedure

Transcript:

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

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

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

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

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,

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

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.

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 1 16 2 16 Istruzione lw $a, ($gp) jal (X) Etichetta X B Tipo istruzione lw jal - - Dipendenza X B

Header del file oggetto B Nome Dim. del testo Procedura B 2 16 di testo (codice) dati Dim. dei dati 4 3 16 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 16 4 4 4 4 1 4 14 3 16 5 16 Istruzione lw $a, 8($gp) jal sw $a1, 82($gp) jal 4 dati 1 (X) 1 2 (Y)

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?