Laboratorio di informatica: ASSEMBLER

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

Introduzione all’HTML
LINGUAGGIO DI PROGRAMMAZIONE C
Il Software.
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Dalla scrittura all’esecuzione
I linguaggi di programmazione
Definizione e tipi di implementazione
Introduzione allarchitettura dei calcolatori 2/ed Carl Hamacher, Zvonko Vranesic, Safwat Zaky Copyright © 2007 – The McGraw-Hill Companies srl Versione.
Elaboratore e Sistemi Operativo
Algoritmi e Programmazione
Massa Laura Mela Enrica
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Caratteri e stringhe di caratteri
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
eliana minicozzi linguaggi1a.a lezione2
Corso di Informatica per Giurisprudenza
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Gestione delle subroutine
Corso di Informatica Applicata - Lezione 3 - © 2005 Saverio De Vito Corso di Informatica Applicata Lezione 3 Università degli studi di Cassino Corso di.
Il Linguaggio Macchina
memoria gestita staticamente:
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
I File.
Espressioni condizionali
Corso di PHP.
EXCEL FORMATTAZIONE DATI.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
Laboratorio di informatica 1
STRUTTURA GENERALE DI UN ELABORATORE
Architettura degli Elaboratori II (canale P-Z) Linguaggi e moduli
Introduzione al linguaggio assembly del microprocessore a parte
Introduzione al linguaggio assemby del microprocessore a parte
Architettura del calcolatore
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
INTERFACCIAMENTO ASSEMBLY - C++
Introduzione al linguaggio assembly del microprocessore a parte
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Complessità di un algoritmo
1 Università di Pavia - corso di Calcolatori Elettronici PROGETTO DI UN SISTEMA BASATO SU  P PROBLEMA REALE SVILUPPO HARDWARESVILUPPO SOFTWARE INTEGRAZIONE.
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Calcolatori Elettronici Assemblatore, Linker e Loader
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Programmazione Assembly
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Esercitazione 3 Introduzione allo SPIM Pseudo-Istruzioni
L’esecuzione dei programmi
Concetti Fondamentali sulla Programmazione
Esercitazione 4 Chiamate di procedure Claudia Raibulet
Il software Claudia Raibulet
Esercizi.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (1) Supporto hardware alle procedure Passaggio.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
Corso di Laurea in Informatica Architettura degli elaboratori a.a Programmazione Assembly: procedure (2) Convenzioni di uso dei registri Utilizzo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Transcript della presentazione:

Laboratorio di informatica: ASSEMBLER Dott. Alessio Malizia malizia@dsi.uniroma1.it

Introduzione Il linguaggio assemblatore (assembly language) o assembler fornisce una rappresentazione simbolica-mnemonica della codifica binaria delle istruzioni in linguaggio macchina. A tal fine l’assemblatore: gestisce i nomi simbolici per le istruzioni e per le celle di memoria, gestisce un insieme di strumenti che agevolano la programmazione e aumentano la chiarezza dei programmi come etichette e macro.

Schema Linker Modulo sorgente Modulo oggetto Assemblatore Modulo eseguibile Libreria Collegatore Modulo sorgente Modulo oggetto Assemblatore

Vantaggi e Svantaggi Risulta utile programmare utilizzando un linguaggio assemblatore quando si ha la necessità di: Raggiungere un’elevata velocità Ridurre le dimensioni del programma Lo svantaggio principale della programmazione in un linguaggio assemblatore è che i programmi ottenuti sono fortemente legati al calcolatore per cui sono stati progettati e vanno riscritti se li si vuole trasportare su un calcolatore differente, tale inconveniente è aggravato dalla rapida evoluzione dei calcolatori per cui un’architettura viene presto soppiantata da architetture piu’ nuove e piu’ veloci.

Memoria del MIPS

SPIM SPIM è un simulatore software che permette l’esecuzione di programmi scritti nel linguaggio macchina del processore MIPS 2000/3000. L’architettura MIPS è un esempio classico (anche se superata) di architettura RISC (Reduced Instruction Set Computer) e per questo piu’ semplice da programmare. Indirizzi web: http://www.cs.wisc.edu/~larus/spim.html ftp://ftp.cs.wisc.edu/pub/spim

I registri

I registri (2) L’unità centrale di elaborazione MIPS è dotata di 32 registri a 32 bit di uso generale numerati da $0 a $31. Il registro $0 contiene sempre il valore 0. Il registro $at ($1) è riservato alle pseudoistruzioni dell’assemblatore, i registri $k0 ($26) e $k1 ($27) sono riservati al nucleo del sistema operativo; questi tre registri non andrebbero mai usati da parte di altri programmi o da parte dei compilatori. I registri $a0, $a1, $a2 e $a3 ($4, $5, $6 e $7) sono usati per passare fino a 4 argomenti al sottoprogramma (eventuali altri argomenti possono essere passati tramite la pila).

I registri (3) I registri $v0 e $v1 ($2 e $3) sono usati per restituire argomenti al programma chiamante. I registri da $t0 a $t9 (da $8 a $15 piu’ $24 e $25) vengono chiamati registri di salvataggio temporaneo e vengono usati per memorizzare temporaneamente valori che non interessa conservare per tutta la durata dell’esecuzione del sottoprogramma. I registri da $s0 a $s7 (da $16 a $23) vengono chiamati registri di salvataggio permanente e servono per memorizzare valori che vanno conservati inalterati per tutta la durata del sottoprogramma.

I registri (4) Il registro $gp ($28) è un puntatore globale che fa riferimento al punto medio di un blocco di memoria da 64K appartenente al segmento dei dati dinamici. Il registro $sp ($29) è il puntatore alla pila (stack pointer) e fa riferimento alla prima cella di memoria libera sulla cima della pila. Il registro $fp ($30) è il puntatore di attivazione di procedura (frame pointer). Il registro $ra - return address - ($31) viene aggiornato dall’istruzione jal in modo che contenga l’indirizzo di rientro da una chiamata a procedura eseguita con istruzione jal.

La finestra Text

La finestra Data

Comandi di SPIM QUIET terminazione del simulatore e ritorno al sistema operativo LOAD caricamento di un modulo contenente codice assemblatore o codice eseguibile RUN lancio della simuzione dell’esecuzione del programma caricato STEP simulazione dell’esecuzione passo−passo del programma caricato CLEAR cancellazione dei registri e della memoria SET VALUE inserimento del valore specificato in un registro o in una cella di memoria PRINT visualizzazione del contenuto di un registro o di una cella di memoria BREAKPOINT inserimento o cancellazione di un’istruzione di sospensione o elenco di tutte le istruzioni di ssospensione inserite nel programma HELP visualizzazione di messaggi di assistenza TERMINAL apertura o chiusura della finestra console MODE impostazione della modalità operativa di SPIM

Sintassi assemblatore SPIM In linguaggio assemblatore i commenti iniziano con il carattere #: tutti i caratteri fino alla fine della linea vengono ignorati dall’assemblatore. Gli identificatori, cioè etichette e codici operativi mnemonici, sono sequenze alfanumeriche che includono i caratteri "_ " e ". " e non possono cominciare con un numero. I codici operativi mnemonici sono considerate parole chiave e non possono essere usati come etichette. Qualsiasi identificatore che cominci in prima colonna e termini con il carattere due punti ":“ viene considerato etichetta. I numeri interi vengono automaticamente considerati in base 10; il prefisso 0x serve ad indicare numeri espressi in base 16; per esempio 256 e 0x100 hanno lo stesso valore. Le stringe vanno racchiuse tra doppi apici ("). Caratteri speciali seguono le convenzioni C: \n carattere di ritorno (newline) \t carattere di tabulazione (tab) \" doppio apice (quote).

Esempio di programma

Chiamate di Sistema

Codice di “la risposta è 5”

Rappresentazione delle istruzioni

Modalità di indirizzamento

Modalità di indirizzamento (2)

Esercizi (1)

Soluzioni (1a)

Soluzioni (1b)

Esercizi (2)

Soluzioni (2a)

Soluzioni (2b)

Esempi (1) Alcuni esempi su come inizializzare e leggere variabili globali e su come eseguire operazioni di Input/Output usando la Console

Esempi (2)

Esempi (3)

Esempi (4)

Esempi (5)

Esempi (6)

Esempi (7)

Esempi (8)