Assemblaggio per il processore Motorola 68000



Documenti analoghi
AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

ASSEMBLER 68K parte 1

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Tecniche di traduzione da C ad assembly Note generali

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Il memory manager. Gestione della memoria centrale

Strutturazione logica dei dati: i file

CALCOLATORI ELETTRONICI II

LE STRUTTURE IN PROGRAMMAZIONE ASSEMBLER

#define N = 5. / funzione funz / int funz (int a, int b) { return (a + r) b; } / fine funzione / programma in linguaggio C

ASSEMBLER 68K parte 2

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lezione 16: L architettura LC-3

Architettura di tipo registro-registro (load/store)

Introduzione alla programmazione in C

Programmazione dello Z80

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

Il Processore: i registri

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Architettura del calcolatore

Lezione 8. La macchina universale

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Esercizi. Assembly. Alessandro A. Nacci ACSO 2014/2014

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

Esercizio riassuntivo di traduzione e assemblaggio da linguaggio C ad assembly Motorola

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

AMBIENTE DI SIMULAZIONE ASIM

Sistemi Operativi. 5 Gestione della memoria

Architettura hardware

Sottoprogrammi: astrazione procedurale

L Assembler Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

Riferimento rapido per l'installazione SUSE Linux Enterprise Server 11 SP1

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

Scheda operativa Versione rif c00. Libro Inventari

Riferimento rapido per l'installazione SUSE Linux Enterprise Server 11

Ing. Paolo Domenici PREFAZIONE

Prova di Laboratorio di Programmazione

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

CPU. Maurizio Palesi

DATABASE. A cura di Massimiliano Buschi

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Lezione n.9. Introduzione al linguaggio macchina

Introduzione al linguaggio assembly MC68000

Architettura di un calcolatore: introduzione

1. CODICE DI ATTIVAZIONE 2. TIPOLOGIE GARANZIE 3. CONFIGURAZIONE NUMERI DI SERIE 4. DOCUMENTI

La programmazione. Sviluppo del software

Von Neumann. John Von Neumann ( )

Q U E S T U R A di V A R E S E Ufficio di Gabinetto

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Hub-PA Versione Manuale utente

Registratori di Cassa

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Riferimento rapido per l'installazione SUSE Linux Enterprise Desktop 11

Introduzione al linguaggio assembly

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

PIANO DI TUTELA DELLE ACQUE DELLA SICILIA (di cui all'art. 121 del Decreto Legislativo 3 aprile 2006, n 152)

La struttura dati ad albero binario

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Università degli Studi di Verona. Laboratorio di Basi di Dati

Database Manager Guida utente DMAN-IT-01/09/10

Struttura del calcolatore

Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Alcune regole di base per scrivere un programma in linguaggio C

Sistema operativo: Gestione della memoria

Sistema Banca dati e Repertorio dei dispositivi medici Notifiche multiple di DM simili

Programmazione di un dispositivo 1to4INTGEN

Architettura dei computer

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Manuale Gestore. STWS Web Energy Control - Servizio di telelettura sul WEB

2015 PERIODO D IMPOSTA

Introduzione al linguaggio assembly

Esempio di moltiplicazione come somma e spostamento

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

WEBGIS 1.0. Guida per l utente

Il Livello ISA Instruction Set Level Architecture. Set istruzioni Motorola Caratteristiche del 68000: da ricordare i registri

Alcuni programmi assembly MC68000

Aprire, preparare un documento da utilizzare come documento principale per una stampa unione.

Registri. «a2» Copyright Daniele Giacomini --

CALCOLATORI ELETTRONICI 15 aprile 2014

REQUISITI DISTINTA ELETTRONICA PREADVISING POSTA 1 PRO E MASSIVA DA RENDICONTARE. Edizione Settembre 2015

Manuale di Aggiornamento BOLLETTINO. Rel DATALOG Soluzioni Integrate a 32 Bit

I file di dati. Unità didattica D1 1

Codifica binaria dei numeri relativi

Sharpdesk V3.3. Guida all installazione Versione

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Funzioni in C. Violetta Lonati

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

Transcript:

Assemblaggio per il processore Motorola 68000 Daniele Paolo Scarpazza daniele.scarpazza@elet.polimi.it Politecnico di Milano Ultimo aggiornamento: 16 Maggio 2005

Assemblaggio A prima vista sembra un problema banale: una riga di assembly = una istruzione in realtà: piccoli problemi, fra cui riferimenti in avanti, esempio (frammento di codice che calcola il valore assoluto):... CMP.L #0, D0 * test whether D0 >= 0 BGE LABEL_POS * jump to LABEL_POS if true NEG.L D0 * else invert D0 LABEL_POS... per assemblare una istruzione di salto in avanti devo già conoscere a quale indirizzo corrisponde l'etichetta. Soluzioni possibili (con vantaggi e svantaggi): assemblaggio in due passate (l'input viene letto 2 volte) caricamento di tutto il listato in memoria in una forma intermedia, elaborazione della forma intermedia;

Primo passo Costruzione della tabella dei simboli: coppie <nome, valore> di etichette e constanti; l'assemblatore mantiene l'ilc (instruction location counter), variabile che contiene l'indirizzo dell'istruzione che sta assemblando in quell'istante; inizializzo ILC a 0 all'inizio dell'assemblaggio; ad ogni direttiva del tipo ORG $xxx, sposto ILC alla locazione xxx; ad ogni istruzione letta, incremento ILC della dimensione di quella istruzione; man mano che incontro le etichette, aggiungo nella tabella dei simboli la coppia: <nome etichetta, valore attuale di ILC>;

Primo passo: tabelle usate Tabella dei simboli: potrebbe contenere informazioni aggiuntive (lunghezza del campo dati, informazioni di rilocazione,...) Tabella degli opcode e degli ingombri: indica come tradurre uno mnemonico in uno degli opcode corrispondenti a seconda degli argomenti; confronta: Hamacher et al., Introduzione all'architettura dei calcolatori, Appendice A; confronta: Motorola M68000 Family, Programmer's Ref. Manual, Section 8, Instruction format summary;

Determinazione dell'ingombro Ingombri delle istruzioni che manipolano dati Istruzione = 1 parola contenente opcode + 0 4 parole di estensione; La parola è lunga 16 bit; Gli opcode sono brevi e lasciano spazio per codificare: modi di indirizzamento del primo e del secondo operando; se il primo/secondo operando sono registri, il numero di registro; Costanti, spiazzamenti e indirizzi si codificano in parole di estensione; Dimensioni possibili: delle costanti: 8, 16 bit (1 parola), 32 bit (2 parole); degli spiazzamenti: 8, 16 bit (1 parola); indirizzi di memoria: 16 bit (1 parola) o 32 bit (2 parole); Eccezioni: ospitano l'argomento nella stessa parola dell'opcode: ADDQ, SUBQ prevedono costanti a 3 bit; MOVEQ permette una costante di 8 bit;

Esempi di ingombro Istruzione parola parola parola parole opcode arg1 arg2 totali MOVEQ.B #$01, D1 1 0 0 1 MOVE.B #$12, D1 1 1 0 2 MOVE.W #$0123, D1 1 1 0 2 MOVE.L #$01234567, D1 1 2 0 3 MOVE.X A1, D1 1 0 0 1 MOVE.X (A1), D1 1 0 0 1 MOVE.X (A1), D1 1 0 0 1 MOVE.X (A1), D1 1 0 0 1 MOVE.X $0123 (A1), D1 1 1 0 2 MOVE.X $01 (A1, D2.Y), D1 1 1 0 2 MOVE.X $01 (A1, D2.Y), $23 (A3, A4.Y), 1 1 1 3 MOVE.X $0123.W, D1 1 1 0 2 MOVE.X $01234567.L, D1 1 2 0 3 MOVE.X $0123.W, $456789AB.L 1 1 2 4 MOVE.W #$0123, $456789AB.L 1 1 2 4 MOVE.X $01234567.L, $89ABCDEF.L 1 2 2 5 MOVE.L #$01234567, $89ABCDEF.L 1 2 2 5 ADD.X D1, D2 1 0 0 1 ADD.X $0123.W, D2 1 1 0 2 ADDX. $01234567.L, D2 1 1 1 3 LSL.X #1, D1 1 0 0 1

Determinazione dell'ingombro (salti) Ingombri delle istruzioni di salto: Istruzione = 1 parola contenente opcode + 0 2 parole di estensione; La parola è lunga 16 bit; Gli opcode sono brevi e lasciano spazio per codificare: modo di indirizzamento della destinazione del salto; se la destinazione è in un registro, il numero di registro; la condizione di salto; uno spiazzamento corto da 8 bit per i salti di tipo Bcc (non modalità registro base; i salti di tipo J); Indirizzi e altri tipi di spiazzamenti vanno in parole di estensione; Dimensioni possibili: degli spiazzamenti: 8 bit + registro base (1 parola), 16 bit (1 parola); indirizzi di memoria: 16 bit (1 parola) o 32 bit (2 parole);

Esempi di ingombro (salti) Istruzione parola parole parole opcode dest totali JMP (A1) 1 0 1 BRA $12 (PC) 1 0 1 Bcc $12 (PC) 1 0 1 BRA $1234 (PC) 1 1 2 Bcc $1234 (PC) 1 1 2 JMP $12 (PC, A1) 1 1 2 JMP $1234 1 1 2 JMP $12345678 1 2 3

Secondo passo Generazione e emissione del codice oggetto: opcode e lunghezza di ogni istruzione sono già noti completamento includendo i valori delle etichette emissione del codice oggetto È a disposizione un esempio completo di traduzione e assemblaggio per un programma C costituito da funzioni multiple.