Programmazione Assembly

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

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
Evoluzione dei linguaggi di programmazione
Organizzazione della memoria
Definizione e tipi di implementazione
Generazione di Codice Intermedio
Elaboratore e Sistemi Operativo
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.
SPIM Esercizi. Esercizio 7 – load/store Il codice deve: Inserire in memoria la word 0x a Leggere questo dato e inserirlo in s0 Sommarci 5 Salvare.
TRADUZIONE DEL PROGRAMMA Una volta che un programma sia stato scritto in C, esso non può essere eseguito senza unulteriore traduzione. Ciò perché qualsiasi.
Laboratorio di informatica: ASSEMBLER
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
CALCOLATORI ELETTRONICI Gestione delle subroutine.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
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.
Struttura dei sistemi operativi (panoramica)
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
Fondamenti di informatica Linguaggio C Main Program: Architettura di un PC Diagrammi di flusso Linguaggio C.
CALCOLATORI ELETTRONICI II
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
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Lo sviluppo del software e i linguaggi di programmazione
Sottoprogramma Un blocco di istruzioni, come ad esempio lanello di ritardo, può costituire un sottoprogramma (subroutine) a sé stante, richiamabile dal.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni Programmazione di Calcolatori: il compilatore e le sue.
INTERFACCIAMENTO ASSEMBLY - C++
Introduzione al linguaggio assembly del microprocessore a parte
Architettura degli Elaboratori II (canale P-Z) Modi di Indirizzamento Dott. Franco Liberati.

Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Architettura di una CPU
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione.
Calcolatori Elettronici Assemblatore, Linker e Loader
Elettronica Digitale (II Parte) 10-11_5 1 ELETTRONICA DIGITALE II (5) 6/12 Il processo di assemblaggio.
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
CALCOLATORI ELETTRONICI
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Corso di Laurea in Informatica Architettura degli elaboratori a.a ISA e Asm: esempi e suggerimenti.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Architettura di un calcolatore e linguaggio macchina.
Esercitazione 3 Introduzione allo SPIM Pseudo-Istruzioni
L’esecuzione dei programmi
SPIM Esercizi. Esercizio 1 – il comando ‘li’ Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
Informatica Generale Marzia Buscemi
Concetti Fondamentali sulla Programmazione
Esercitazione 4 Chiamate di procedure Claudia Raibulet
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Esercizi.
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
1 System Call ancora Vediamo passo passo come funziona una SC.
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.
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
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:

Programmazione Assembly Catena programmativa Linguaggio Assembly Istruzioni aritmetiche e logiche (esempi) Pseudo istruzioni Direttive

Formato simbolico (assembly) Un formato un po’ più comodo usato da chi programma “linguaggio sorgente” (un programma è un testo) add $10, $8, $9 add $t2, $t0, $t1 codici operativi simbolici nomi simbolici di registri ($xxx) (attenzione all’ordine degli operandi asm rispetto ai campi dell’istruzione macchina) lw $10, pippo nomi simbolici di variabili (che diventeranno indirizzi) qualcuno (la catena programmativa) traduce da sorgente a eseguibile quello che viene caricato in memoria ed eseguito è sempre l’eseguibile (codice macchina) SPIM e MARS si occupano anche di queste cose, ma non facciamo confusione fra linguaggio sorgente e linguaggio macchina!! A.A 2014-15 ASM(1)

Catena programmativa File Sorgente Assembler File Oggetto Linker File Eseguibile File Sorgente Assembler File Oggetto A.A 2014-15 ASM(1)

Convenzioni assembly: nomi e usi dei registri Nome Simbolico Numero Uso $zero Costante 0 $at 1 Assembler temporary $v0-$v1 2-3 Functions and expressions evaluation $a0-$a3 4-7 Arguments $t0-$t7 8-15 Temporaries $s0-$s7 16-23 Saved Temporaries $t8-$t9 24-25 $k0-$k1 26-27 Reserved for OS kernel $gp 28 Global pointer $sp 29 Stack pointer $fp 30 Frame pointer $ra 31 Return address Usati da assembler, compilatore, sistema operativo Secondo specifiche convenzioni (ne parliamo in seguito) …da trattare con cautela se si programma in assembly!!! A.A 2014-15 ASM(1)

Direttive all’assemblatore (Meccanismi misteriosi) NON corrispondono a istruzioni macchina Sono indicazioni date all’assembler per consentirgli di associare etichette simboliche a indirizzi allocare spazio di memoria per le variabili decidere in quali zone di memoria allocare istruzioni e dati ... Esempi di direttive .data <addr> quel che segue va nel segmento dati (eventualmente dall’indirizzo addr) .byte b1,....,bn inizializza i valori in byte successivi .word w1,....,wn inizializza i valori in word successive .text <addr> quel che segue va nel segmento text (programma) (eventualmente dall’indirizzo addr) A.A 2014-15 ASM(1)

Esempio .data item: .word 1 .text .globl main #meccanismo misterioso main: lw $t0, item A.A 2014-15 ASM(1)

Istruzioni aritmetiche e logiche (esempi) add rd, rs, rt addizione rs + rt -> rd (con overflow...ne parliamo in seguito...) addi rd, rs, imm addizione immediata sign-extended imm + rs -> rd (con overflow) and rd, rs, rt and bit a bit di rs e rt -> rd or rd, rs, rt or bit a bit (logical or) di rs e rt -> rd ori rt, rs, imm or bit a bit (logical or) di rs e zero-extended imm -> rt sll rd, rt, shamt shift left rt della distanza shamt -> rd A.A 2014-15 ASM(1)

Manipolazione di costanti lui rt, imm load upper immediate immediate (di 16 bit!!!) -> upper half word di rt I 16 bit bassi di rt sono 0 ...e se si vuole caricare una costante di 32 bit? esempio: caricare in $s0 il valore 4000000 0000 0000 0011 1101 0000 1001 0000 0000 lui $s0, 61 (oppure: lui $s0, 0x003d) # contenuto di $s0: 0000 0000 0011 1101 0000 0000 0000 0000 ori $s0, $s0, 2304 (oppure: ori $s0, 0x0900) # contenuto di $s0: 0000 0000 0011 1101 0000 1001 0000 0000 A.A 2014-15 ASM(1)

Pseudoistruzioni Pseudo istruzione: Esempio: li rdest, imm istruzione assembly che non ha una corrispondente istruzione macchina tradotta dall’assembler in una sequenza di istruzioni: Esempio: li rdest, imm load immediate caricare una costante di 32 bit nel registro rdest li $s0, 4000000 Tradotta dall’assemblatore nella sequenza della slide precedente Esempio 2: move $t0, $t1 Tradotta dall’assemblatore in add $t0, $zero, $t1 A.A 2014-15 ASM(1)

Riferimenti principali Patterson – Hennessy, Computer Organization and Design, Morgan Kaufmann Capitolo 2, Sezioni da 1 a 7, Sezione10, parte iniziale della 12 Appendice B, almeno B.1,B.2, B.9, B.10 ...ma non è vietato dare una scorsa almeno all’indice e alle introduzioni di tutti i capitoli Appendice B (A nella vecchia edizione) A.A 2014-15 ASM(1)