Laboratorio di Architettura degli Elaboratori

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Laboratorio di Architettura degli Elaboratori"

Transcript

1 Laboratorio di Architettura degli Elaboratori Graziano Pravadelli Dipartimento di Informatica Università di Verona Introduzione all assembly In questa lezione vengono introdotti i concetti fondamentali della programmazione assembler (sintassi AT&T) sotto Linux. Perché l assembly? Confrontando le potenzialità del linguaggio assembly con quelle di un linguaggio di programmazione ad alto livello come il C, si possono individuare i seguenti vantaggi: è possibile accedere ai registri della CPU; è possibile scrivere codice ottimizzato per la architettura target; è possibile ottimizzare accuratamente le sezioni critiche dei programmi. Viceversa, i principali svantaggi derivanti dall utilizzo dell assembly sono i seguenti: possono essere richieste molte righe di codice assembly per riprodurre il comportamento di poche righe di C; è facile introdurre dei bug nei programmi; i bug sono difficili da trovare; non è garantita la compatibilità del codice per versioni successive dello hardware; Ma allora a cosa serve conoscere l assembly? Da un punto di vista didattico, l assembly rappresenta il linguaggio di programmazione ideale durante lo studio dell architettura dei calcolatori perché permette di toccare con mano il funzionamento della CPU. Prescindendo dall aspetto didattico, l utilizzo del linguaggio assembly, rispetto all uso dei tradizionali linguaggi ad alto livello, è talvolta giustificato dalla maggiore efficienza del codice prodotto. I programmi assembly, benché più complessi, sono tipicamente più veloci e più piccoli (rispetto al consumo di memoria, non al numero di righe di codice!) dei programmi scritti in linguaggi ad alto livello. Inoltre, la programmazione assembly è indispensabile per la scrittura di driver per hardware specifici. Non va infine dimenticato che conoscere l assembly consente di scrivere codice ad alto livello di qualità migliore. Assemblare, verificare ed eseguire un programma assembly Il processo di creazione di un programma Assembly passa attraverso le seguenti fasi: Scrittura di uno o più file ASCII (estensione.s) contenenti il programma sorgente, tramite un normale editor di testo. Assemblaggio dei file sorgenti, e generazione dei file oggetto (estensione.o), tramite un assemblatore. Creazione, del file eseguibile, tramite un linker. Verifica del funzionamento e correzione degli eventuali errori, tramite un debugger.

2 L assemblatore L Assemblatore trasforma i file contenenti il programma sorgente in altrettanti file oggetto contenenti il codice in linguaggio macchina. Durante il corso verrà utilizzato l assemblatore gas della GNU. Per assemblare un file è necessario eseguire il seguente comando: as o miofile.o miofile.s Si consulti la documentazione (man as) per l elenco delle opzioni disponibili. Il linker Il linker combina i moduli oggetto e produce un unico file eseguibile. In particolare: unisce i moduli oggetto, risolvendo i riferimenti a simboli esterni; ricerca i file di libreria contenenti le procedure esterne utilizzate dai vari moduli e produce un modulo rilocabile ed eseguibile. Notare che l operazione di linking deve essere effettuata anche se il programma è composto da un solo modulo oggetto. Durante il corso verrà utilizzato il linker ld della GNU. Per creare l eseguibile a partire da un file oggetto è necessario eseguire il seguente comando: ld o miofile miofile.o Si consulti la documentazione (man ld) per l elenco delle opzioni disponibili. Il debugger Il debugger è uno strumento software che permette di verificare l esecuzione di altri programmi. Il suo utilizzo risulta indispensabile per trovare errori (bug, da qui il nome debugger) in programmi di complessità elevata. Le principali caratteristiche di un debugger sono: possibilità di eseguire il programma passo a passo ; possibilità di arrestare in modo condizionato l esecuzione del programma tramite l inserimento di breakpoint; possibilità di visualizzare ed eventualmente modificare il contenuto dei registri e della memoria. Il debugger più diffuso in ambiente Linux e il gdb della GNU. Il gdb funziona in modalità testo, pertanto i comandi vengono impartiti mediante il prompt. Tuttavia, per semplificare il suo utilizzo sono stati sviluppati numerosi front-end grafici, il più diffuso dei quali risulta essere il ddd. Per poter utilizzare un debugger, i programmi devono essere assemblati e linkati opportunamente tramite le seguenti righe di comando: as gstabs -o miofile.o miofile.s ld -o miofile miofile.o

3 L opzione gstab permette di inserire nel file oggetto, e quindi nell eseguibile, le informazioni necessarie al debugger. Per avviare il gdb lanciare il comando gdb. Per avviare il ddd lanciare il comando ddd. Comandi più frequenti del gdb: file nome_eseguibile break numero_riga run step next continue finish info registers p/formato $registro x/nw indirizzo help Carica il programma per il debugging. Imposta un breakpoint alla riga specificata. Esegue il programma. L esecuzioni del programma si sospende quando viene raggiunta il primo breakpoint. Nel caso non vi siano breakpoint l esecuzione avviene normalmente. Esegue l istruzione corrente quando l esecuzione del programma è sospesa a seguito del raggiungimento di un breakpoint. Reiterare il comando step per continuare ad eseguire un istruzione alla volta. Similmente al comando step esegue l istruzione corrente, ma nel caso si tratti di una chiamata a funzione, essa viene eseguita atomicamente senza visualizzare le istruzioni che la compongono. Prosegue l esecuzione del programma fino al prossimo breakpoint. Prosegue l esecuzione del programma fino alla fine. Visualizza il contenuto dei registri. Stampa il contenuto del registro registro nel formato indicato dalla opzione formato. Le possibili opzioni sono: x per esadecimale, o per ottale, d per decimale, t per binario. Ad esempio per stampare il contenuto del registro eax in binario bisogna lanciare il comando p/t $eax. Visualizza il contenuto di n parole della memoria a partire della locazione di cui viene fornito l indirizzo. Se ad esempio una zona di memoria è etichettata con l etichetta locazione, il comando: x/4w &locazione visualizza il contenuto di 4 parole della memoria a partire dall indirizzo associato all etichetta. Visualizza le istruzioni per l utilizzo della guida in linea. I comandi sopra elencati possono essere eseguiti anche utilizzando ddd. In tal caso la loro esecuzioni avviene cliccando sui corrispondenti pulsanti nelle barre degli strumenti o sulle voci dei menu. I registri I processori della famiglia intel x86 possiedono almeno i seguenti registri: AX, BX, CX, DX, CS, DS, ES, SS, SP, BP, SI, DI, IP, FLAGS. Originariamente, fino alla nascita del processore 80386, i registri AX, BX, CX, DX, SP, BP, SI, DI, FLAGS ed IP avevano una dimensione pari a 16 bit. A partire dal 80386, la loro dimensione è stata portata a 32 bit e al loro nome è stata aggiunta la lettera E (per indicare extended) in prima posizione. Ad esempio, il registro AX è diventato EAX. EAX, EBX, ECX, ed EDX sono registri generici (general purpose registers), pertanto è possibile assegnargli qualunque valore. Tuttavia, durante l esecuzione di alcune istruzioni i registri generici vengono utilizzati per memorizzare valori ben determinati:

4 EAX (accumulator register) è usato come accumulatore per operazioni aritmetiche e contiene il risultato dell operazione. EBX (base register) è usato per operazioni di indirizzamento della memoria. ECX (counter register) è usato per contare, ad esempio nelle operazioni di loop. EDX (data register) è usato nelle operazioni di input/output, nelle divisioni e nelle moltiplicazioni. CS, DS, ES e SS sono i registri di segmento (segment registers) e devono essere utilizzati con cautela CS (code segment) punta alla zona di memoria che contiene il codice. Durante l'esecuzione del programma Usato assieme a IP serve per accedere alla prossima istruzione da eseguire (attenzione: non può essere modificato). DS (data segment) punta alla zona di memoria che contiene i dati. ES (extra segment) può essere usato come registro di segmento ausiliario. SS (stuck segment) punta alla zona di memoria in cui risiede lo stack. ESP, EBP, EIP sono i registri puntatore (pointer registers): ESP (stack pointer) punta alla cima dello stack. Viene modificato dalle operazioni di PUSH (inserimento di un dato nello stack) e POP (estrazioni di un dato dallo stack). Si ricordi che lo stack è una struttura di tipo LIFO (Last In First Out l ultimo che entra è il primo che esce). E possibile modificarlo anche manualmente a proprio rischio e pericolo! EBP (base pointer) punta alla base dello stack. EIP (instruction pointer) punta alla prossima istruzione da eseguire. Non può essere modificato. ESI e EDI sono i registri indice (index registers) e vengono utilizzati per operazioni con stringhe e vettori: ESI (source index) punta alla stringa/vettore sorgente. EDI (destination index) punta alla stringa/vettore destinazione. EFLAGS è utilizzato per memorizzare lo stato corrente del processore. Ciascuna flag (bit) del registro fornisce una particolare informazione. Ad esempio, la flag in posizione 0 (carry flag) viene posta a 1 quando c è stato un riporto o un prestito durante un operazione aritmetica; la flag in posizione 1 (parity flag) viene usata come bit di parità e viene posta a 1 quando il risultato dell ultima operazione ha un numero pari di 1; Modalità di indirizzamento Il termine modalità di indirizzamento si riferisce al modo in cui l operando di un istruzione viene specificato. Esistono 7 modalità di indirizzamento principali: Indirizzamento a registro: l operando è contenuto in un registro. Il nome del registro è specificato nell istruzione. Indirizzamento assoluto: l operando è contenuto in una locazione di memoria. L indirizzo della locazione viene specificato nell istruzione.

5 Indirizzamento immediato: l operando è un valore costante ed è definito esplicitamente nella istruzione. Indirizzamento indiretto: l indirizzo di un operando è contenuto in un registro o in una locazione di memoria. L indirizzo della locazione o il registro viene specificato nell istruzione. Indirizzamento indicizzato: l indirizzo effettivo dell operando è calcolato sommando un valore costante al contenuto di un registro. Indirizzamento con autoincremento: l indirizzo effettivo dell operando è il contenuto di un registro specificato nell istruzione. Dopo l accesso all operando, il contenuto del registro viene incrementato per puntare all elemento successivo. Indirizzamento con autodecremento: il contenuto di un registro specificato nell istruzione viene decrementato. Il nuovo contenuto viene usato come indirizzo effettivo dell operando. Struttura di un programma assembly I programmi assembly sono composti da almeno tre sezioni: text, data e bss. Ognuna di queste sezioni può essere eventualmente vuota. Altre sezioni possono essere create mediante la direttiva.section. La sezione data viene utilizzata per dichiarare dati inizializzati, ovvero costanti. La sezione test contiene il codice assembly vero e proprio. Questa sezione deve iniziare con la dichiarazione global _start che fornisce al kernel la locazione di memoria in cui si trova la prima istruzione del programma (è simile alla funzione main di Java o del C). La sezione bss consente di riservare spazio in memoria per il programma, e contiene la dichiarazione delle variabili. Formato istruzione Etichetta istruzione: operazione operando1, operando2 L etichetta può essere opzionale. Il numero di operandi dipende dal tipo di operazione. La sintassi AT&T Esistono due principali tipi di sintassi per il linguaggio assembly: la sintassi Intel e la sintassi AT&T. Il compilatore gas utilizza quest ultima. Confrontando la sintassi AT&T con quella Intel, si possono evidenziare le seguenti differenze: In AT&T i nomi dei registri hanno % come prefisso, cosicché i registri sono %eax, %ebx e così via invece di solo eax, ebx, ecc. Ciò fa sì che sia possibile includere simboli C esterni direttamente nel sorgente assembly, senza alcun rischio di confusione e senza alcun bisogno di orribili underscore anteposti. In AT&T l'ordine degli operandi è l opposto rispetto a quello della sintassi Intel, ovvero: sorgente, destinazione. Quindi, ciò che nella sintassi intel è mov

6 eax,edx (carica il contenuto del registro EDX nel registro EAX), in AT&T diventa mov %dx, %ax. In AT&T la lunghezza dell'operando è specificata tramite un suffisso al nome dell'istruzione. Il suffisso è b per byte (8 bit), w per word (parola) e l per double word (parola doppia). Ad esempio, la sintassi corretta per l'istruzione menzionata poco fa è movl %dx,%ax. Tuttavia, poiché gas non richiede una sintassi AT&T rigorosa, il suffisso è opzionale quando la lunghezza dell operando può essere ricavata dai registri usati nell operazione. In caso contrario, viene posta a 32 bit (con un avviso). Gli operandi immediati sono indicati con il prefisso $. Ad esempio addl $5,%eax (somma il valore long 5 al registro EAX). L'assenza di prefisso in un operando indica che si tratta di un indirizzo di memoria. Pertanto, l istruzione movl $pippo,%eax mette l'indirizzo della variabile pippo nel registro EAX, mentre movl pippo,%eax mette il contenuto della variabile pippo nel registro %eax. L'indicizzazione o l'indirezione è ottenuta racchiudendo il registro indice, o l'indirizzo della cella di memoria di indirezione, tra parentesi. Ad esempio l istruzione testb $0x80,17(%ebp) esegue un test sul bit più alto del valore byte all'offset 17 dalla cella puntata dal valore contenuto in EBP. Esempio # Nome file # # hello.s # # Istruzioni per la compilazione # # as -o hello.o hello.s # ld -o hello hello.o # # Funzionalita' # # Stampa a video la scritta "Ciao Mondo!\n" # # Commenti # # Le righe che iniziano con il carattere # sono commenti. # E possibile usare anche la sintassi C /* */.section.data hello:.ascii "Hello World!\n" hello_len:.long. hello.section.text.global _start _start: movl $4, %eax #sezione data #etichetta #stringa costante #lunghezza della stringa #sezione text #punto di inizio del programma #Carica in EAX il codice della #system call write per scrivere #la stringa Ciao Mondo! a video

7 xorl %ebx, %ebx incl %ebx leal hello, %ecx movl hello_len, %edx int $0x80 xorl %eax, %eax #Azzera il contenuto di EBX #Incrementa di 1 il contenuto di #EBX. Quindi ora EBX=1. 1 è il #primo #parametro per la write e #serve per indicare che vogliamo #scrivere nello standard output #carica in ECX l indirizzo di #memoria associato alla etichetta #hello, ovvero il puntatore alla #stringa Ciao Mondo!\n da #stampare. Secondo parametro della #write #carica in EDX la lunghezza della #stringa Ciao Mondo!\n. Terzo #parametro della write #esegue la system call write #tramite l interrupt 80 #Azzera il registro EAX incl %eax #incrementa di 1 il registro EAX. 1 #è il codice della system call exit xorl %ebx, %ebx int $0x80 #azzera EBX. Contiene il codice di #ritorno della exit #esegue la system call exit Chiamate a funzioni del sistema operativo Nell esempio precedente è stata usata la funzione di sistema write per stampare a video la stringa Ciao Mondo!. La funzione write è stata invocata mediante l interrupt 0x80. Il codice corrispondente alla funzione write (4) è stato passato attraverso il registro EAX, mentre i parametri della funzione sono stati forniti nei registri EBX ECX EDX. Allo stesso modo è stata invocata al funzione di sistema exit per terminare il programma. In generale, in Linux, le chiamate alle funzioni di sistema vengono fatte invocando l interrupt 0x80. Il codice della funzione deve essere inserito nel registro EAX, mentre i parametri devono essere forniti negli altri registri (EBX, ECX, EDX, ESI, EDI). Nel caso in cui i parametri siano più di 5, essi devono essere collocati nella memoria e il registro EBX deve contenere l indirizzo della locazione di memoria che contiene il primo parametro. La lista delle funzioni di sistema è reperibile nel file /usr/include/asm/unistd.h La descrizione di ciascuna funzione è reperibile nel secondo volume del man di Linux. Ad esempio, digitare nella shell il comando man 2 write per visualizzare le informazioni sulla funzione write.

8 Esercizio 1 Creare un programma assembly che sommi i numeri 100, 33 e 68 e stampi il risultato a video. Istruzioni da utilizzare: MOV sorgente, destinazione ADD operando1, operando2 Necessaria per caricare i dati nei registri. Somma il valore dell operando1 a quello dell operando2 e mette il risultato in quest ultimo Esercizio 2 Utilizzare il debugger gdb per visionare il contenuto dei registri durante l esecuzione del programma realizzato per l esercizio precedente. Associare un breakpoint ad ogni linea che coinvolge operazioni MOV o ADD, e visionare il corretto contenuto dei registri.

Assembly. Modello x86

Assembly. Modello x86 Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore

Dettagli

Famiglia dei processori INTEL

Famiglia dei processori INTEL Famiglia dei processori INTEL 1975 2002 8080-8086 - 80286-80386 - 80486 - Pentium - Pentium II-III-IV - Itanium Compatibilità del SW (assemby) 8086 80286 80386 80486 Pentium Pentium III Perché studiare

Dettagli

L insieme delle istruzioni (6)

L insieme delle istruzioni (6) L insieme delle istruzioni (6) Architetture dei Calcolatori (lettere A-I) Alcune note conclusive I due principi dell architettura a programma memorizzato Uso di istruzioni indistinguibili dai dati Uso

Dettagli

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A.

Accesso a memoria. Accesso a memoria. Accesso a memoria. Modalità di indirizzamento. Lezione 5 e 6. Architettura degli Elaboratori A. < < } } Lezione 5 e 6 Accesso a memoria A questo livello di astrazione, la memoria viene vista come un array di byte Per ogni richiesta di un dato ad un certo indirizzo, la CPU ottiene un numero di byte

Dettagli

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA Lezione n.11 n.11 Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di base relativi

Dettagli

Nel microprocessore 8086 abbiamo una gran quantità di registri

Nel microprocessore 8086 abbiamo una gran quantità di registri I registri del microprocessore 8086 Nel microprocessore 8086 abbiamo una gran quantità di registri AH AL AX 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 B H B L BX 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 C H C L CX 1 0 1 1

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

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

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Interazione con il DOS e il BIOS

Interazione con il DOS e il BIOS Interazione con il DOS e il BIOS ARGOMENTI PRESENTATI IN QUESTI LUCIDI Routine di BIOS e DOS Due modalità diverse di restituire il controllo al DOS L interazione con le routine del DOS: l interrupt 21H

Dettagli

Debug di un programma

Debug di un programma Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal

Dettagli

FONDAMENTI DI INFORMATICA Lezione n. 11

FONDAMENTI DI INFORMATICA Lezione n. 11 FONDAMENTI DI INFORMATICA Lezione n. 11 ARCHITETTURA INTERNA ARCHITETTURA ESTERNA CODICE MACCHINA MODI DI INDIRIZZAMENTO ARCHITETTURE A PIU' INDIRIZZI In questa lezione verranno introdotti i concetti di

Dettagli

Debugger. Marco Alberti Programmazione e Laboratorio, A.A

Debugger. Marco Alberti Programmazione e Laboratorio, A.A Debugger Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 18 ottobre 2016 Introduzione Che cos è un debugger

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo Microprocessori INTEL per il PC 8080 (1974)

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

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

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Anno Accademico 2009-2010 Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo I processori Intel

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Introduzione al linguaggio macchina Indice Che cos è l assembly Elementi del linguaggio Memoria di programma Registri interni e di I/O Registri particolari Rappresentazione dell

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: motivi didattici: l architettura dei processori Intel

Dettagli

DEC PDP8, III Generazione, '65-'75

DEC PDP8, III Generazione, '65-'75 Parte I DEC PDP8, III Generazione, '65-'75 PDP8 Architettura (Livello Registri) 12 bit Program Counter PC 12 bit Memory Address Register MAR Random Access Memory RAM 4096 x 16 1 bit I 3 bit Operation Code

Dettagli

Spazio di indirizzamento virtuale

Spazio di indirizzamento virtuale Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 016-01 Spazio di indirizzamento virtuale Pietro Di Lena - pietro.dilena@unibo.it // The function name says it all int stack_overflow (){

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

Guida all installazione ed all uso di ASIM

Guida all installazione ed all uso di ASIM Corso di Calcolatori Elettronici I Guida all installazione ed all uso di ASIM ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Ciclo di sviluppo semplificato di programmi assembly MC68000

Dettagli

Hardware di un Computer

Hardware di un Computer Hardware di un Computer Monitor Mouse Tastiera Printer Disk CPU Graphics Adapter USB Controller Parallel Port Disk Controller BUS Memoria RAM Memoria ROM (BIOS) DMA CPU esegue istruzioni, effettua calcoli,

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel della terza generazione progetto del 1978/79 address bus: 20 bit Ä 1M byte data bus: 8 bit per l 8088, 16 bit per l 8086 identico

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 4 ISC Esercizi per il recupero del debito formativo: Facendo esclusivamente uso delle istruzioni del linguaggio macchina mnemonico del microprocessore INTEL 8086 viste

Dettagli

Il processore Motorola (MC68000)

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

Dettagli

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

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU: Struttura e Funzione del Processore Capitolo 12 Struttura CPU Compiti CPU: Prelevare istruzioni Interpretare istruzioni Prelevare dati Elaborare dati Scrivere (memorizzare) dati 1 CPU con bus di sistema

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: motivi didattici: l architettura dei processori Intel

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

Lezione 15 Il Set di Istruzioni (1)

Lezione 15 Il Set di Istruzioni (1) Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Un quadro della situazione Input/Output Sistema di Interconnessione Registri

Dettagli

Programmazione Assembly per 8088: Esercizi svolti

Programmazione Assembly per 8088: Esercizi svolti Programmazione Assembly per 8088: Esercizi svolti Marco Di Felice 13 dicembre 2006 1 Esercizio 1 (esercizio 1 del Tanenbaum, Appendice C) TESTO. Dopo l esecuzione dell istruzione MOV AX, 702 qual è il

Dettagli

Linguaggi e moduli. Dott. Franco Liberati

Linguaggi e moduli. Dott. Franco Liberati (canale A-D) A Linguaggi e moduli Dott. Franco Liberati Linguaggi di programmazione Compilatore Assemblatore Linker (collegatore) LINKER COMPILATORE ASSEMBLATORE LINGUAGGI DI PROGRAMMAZIONE Linguaggio

Dettagli

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. I processori Intel Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. L'8086 e' un processore a 16 bit quindi i suoi registri potranno

Dettagli

Macchina di Riferimento: argomenti

Macchina di Riferimento: argomenti Macchina di Riferimento: argomenti L'architettura di una macchina MIPS Organizzazione della memoria I registri della CPU L'esecuzione dei programmi Il ciclo fetch-execute Il simulatore SPIM 1 Architettura

Dettagli

Corso di Architettura (Prof. Scarano) 09/04/2002

Corso di Architettura (Prof. Scarano) 09/04/2002 Corso di Architettura (Prof. Scarano) 09/0/2002 Un quadro della situazione Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno

Dettagli

SET/CLEAR LOAD DATA FROM STRING

SET/CLEAR LOAD DATA FROM STRING SET/CLEAR STD CLD AZIONE: Imposta ad 1 (STD) o a zero (CLD) il valore del flag DF. Sono istruzioni senza parametri. Vanno sempre messi!! FLAG di cui viene modificato il contenuto: Nessuno (a parte DF).

Dettagli

1 Esercizi con architettura a 1 bus

1 Esercizi con architettura a 1 bus 1 Esercizi con architettura a 1 bus 1.1 Fetch dell istruzione NOTA: l istruzione ClearY azzera il registro Y mentre l istruzione CB imposta a 1 il bit di riporto/prestito in modo da sommare/sottrarre 1.

Dettagli

I Linguaggi di Programmazione

I Linguaggi di Programmazione I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

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 Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7

Dettagli

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10)

ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10) ARCHITETTURA DEL MICROPROCESSORE INTEL 8086 (iapx86/10) Chip con 40 piedini e 29000 transistori Progettato a metà degli anni 70, periodo in cui la densità di integrazione era relativamente bassa ( solo

Dettagli

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche 3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni

Dettagli

2 Lavorare con Eclipse

2 Lavorare con Eclipse Corso Eclipse 2 Lavorare con Eclipse 1 Prerequisiti Conoscenza elementare ambiente Eclipse Compilare ed eseguire semplici applicazioni Java Conoscere i tipici errori di programmazione Individuare errori

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 Instruction Set Architecture: nozioni generali Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello del linguaggio specializzato Traduzione (compilatore) o interpretazione

Dettagli

Modi di indirizzamento

Modi di indirizzamento Vari modi di specificare l indirizzo degli operandi Modi di indirizzamento Capitolo 11 Immediato Diretto Indiretto Registro Registro indiretto Spiazzamento Pila 1 2 Indirizzamento immediato L operando

Dettagli

Numeri Reali. Sottoinsieme discreto dei Numeri Razionali. Sequenze di bit. Underflow. Densità che dipende dal numero di bit usati

Numeri Reali. Sottoinsieme discreto dei Numeri Razionali. Sequenze di bit. Underflow. Densità che dipende dal numero di bit usati Numeri Reali Sottoinsieme discreto dei Numeri Razionali Sequenze di bit Overflow Underflow Overflow 0 Densità che dipende dal numero di bit usati 1 Numeri Reali Virgola fissa (1/5) Si usa un numero fisso

Dettagli

Linguaggio Assembler Intel -cenni - Calcolatori Elettronici B a.a. 2005/2006 Massimiliano Giacomin

Linguaggio Assembler Intel -cenni - Calcolatori Elettronici B a.a. 2005/2006 Massimiliano Giacomin Linguaggio Assembler Intel -cenni - Calcolatori Elettronici B a.a. 2005/2006 Massimiliano Giacomin 1 Un po di storia 1978: architettura 8086, a 16 bit, con registri dati a 16 bit e spazio di indirizzamento

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App. Assembly Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A 1 Linguaggio assembly (App. A) Rappresentazione simbolica del linguaggio macchina Più comprensibile

Dettagli

La programmazione in linguaggio C

La programmazione in linguaggio C FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni

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

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE Il computer o elaboratore è una macchina altamente organizzata capace di immagazzinare, elaborare e trasmettere dati con notevole precisione e rapidità. Schematicamente

Dettagli

Il livello architettura e set di istruzioni

Il livello architettura e set di istruzioni Corso di Informatica 2 Prof. Sciuto Il livello architettura e set di istruzioni Daniele Paolo Scarpazza Dipartimento di Elettronica e Informazione Politecnico di Milano 7 Giugno 2004 Daniele Paolo Scarpazza

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

Metodi di indirizzamento

Metodi di indirizzamento Testo di rif.to: [Congiu] 4.3 (pg. 138 148) 02.b Metodi di indirizzamento Indirizzamento immediato Indirizzamento di registro Indirizzamenti in memoria Metodi di indirizzamento 1 Gli indirizzi degli operandi

Dettagli

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 15 Prof. Rosario Cerbone rosario.cerbone@libero.it http://digilander.libero.it/rosario.cerbone a.a. 2005-2006 L'INDIRIZZAMENTO NEL PROCESSORE MC 68000

Dettagli

Il microprocessore 8086

Il microprocessore 8086 1 Il microprocessore 8086 LA CPU 8086 Il microprocessore 8086 fa parte della famiglia 80xxx della INTEL. Il capostipite di questa famiglia è stato l 8080, un microprocessore ad 8 bit che ha riscosso un

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Esercizi su microistruzioni. 1 Esercizi con architettura a 1 bus

Esercizi su microistruzioni. 1 Esercizi con architettura a 1 bus Esercizi su microistruzioni Ogni riga elenca i segnali che vengono attivati nello stesso ciclo di clock. Si assume che lettura e scrittura dei registri avvengano all inizio e alla fine del ciclo di clock,

Dettagli

Lezione XII: La gestione delle eccezioni in MINIX

Lezione XII: La gestione delle eccezioni in MINIX 1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 4 aprile 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE. Cosimo Laneve

INTRODUZIONE ALLA PROGRAMMAZIONE. Cosimo Laneve INTRODUZIONE ALLA PROGRAMMAZIONE Cosimo Laneve 1 argomenti (Capitolo 1 Savitch) 1. sistemi di calcolo 2. programmazione e problem solving 3. introduzione a C++ 4. testing e debugging 2 sistema di calcolo

Dettagli

Il linguaggio Assembly

Il linguaggio Assembly 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

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088

ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 ARCHITETTURA DEI MICROPROCESSORI INTEL 8086/8088 microprocessori Intel di terza generazione progetto originario del 1979, ancora oggi interessanti per: 1. motivi didattici: l architettura dei processori

Dettagli

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I) Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo

Dettagli

L architettura Intel

L architettura Intel Architettura degli Elaboratori e delle Reti Lezione 33 L architettura Intel Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 33 1/30 Le prime

Dettagli

Componenti di un sistema operativo

Componenti di un sistema operativo Componenti di un sistema operativo Dipartimento di Informatica Università di Verona, Italy Componenti di un S.O. Gestione dei processi Gestione della memoria primaria Gestione della memoria secondaria

Dettagli

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Introduzione a Visual Studio Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Introduzione a Visual Studio 2010 Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Sviluppo del Software Un editor e un word processor specializzato e usato per scrivere i moduli sorgenti

Dettagli

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da

Dettagli

L architettura Intel/AMD a 64 bit

L architettura Intel/AMD a 64 bit L architettura Intel/AMD a 64 bit G. Lettieri 3 Marzo 2017 1 Registri e istruzioni I processori Intel/AMD a 64 bit sono una evoluzione dei precedenti processori a 32 bit, evoluzione a loro volta dei precedenti

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

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione.

Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione. Consegne estive per gli studenti con sospensione del giudizio nella materia Sistemi per l'elaborazione e la trasmissione dell'informazione. Facendo esclusivamente uso delle istruzioni del linguaggio macchina

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

INTRODUZIONE ALLA PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni

Dettagli

Architettura di un calcolatore: Introduzione parte 2

Architettura di un calcolatore: Introduzione parte 2 Corso di Calcolatori Elettronici I Architettura di un calcolatore: Introduzione parte 2 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

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

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003 Il Ciclo Fetch-Decode-Execute C Nyssen/Aberdeen College 2003 Linguaggio Assembler Op code (Mnemonico) Operando #assembly code program 0000 LDA-24 #loads 0001 ADD-25 #adds 0002 HLT #stops #end of program

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

Calcolatori Elettronici Lezione A4 Programmazione a Moduli

Calcolatori Elettronici Lezione A4 Programmazione a Moduli Calcolatori Elettronici Lezione A4 Programmazione a Moduli Ing. Gestionale e delle Telecomunicazioni A.A. 2007/08 Gabriele Cecchetti Sommario Programmazione a moduli Programmi con linguaggi misti Tempo

Dettagli

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086)

Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) PROF. CARMELO CALARCO Breve guida AL LINGUAGGIO ASSEMBLY (emulatore EMU8086) 1 IL LINGUAGGIO ASSEMBLY Il linguaggio assembly è un linguaggio di programmazione a basso livello. Per linguaggi di basso livello

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

Traduzione e interpretazione

Traduzione e interpretazione Traduzione e interpretazione Parte dei lucidi sono stati gentilmente forniti dal Prof. Salza VII.1 Linguaggi di programmazione Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore

Dettagli

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2009-10 Dai flow-chart ai linguaggi... Abbiamo imparato ad usare uno strumento formale i flowchart per

Dettagli

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi

Dettagli

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B

; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B Linguaggi di programmazione Il linguaggio base di un elaboratore è il linguaggio macchina. Linguaggio macchina: insieme di istruzioni espresse nel formato numerico (binario) di un particolare processore.

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

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

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 Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base

Dettagli

Organizzazione di un SO monolitico

Organizzazione di un SO monolitico Organizzazione di un SO monolitico Applicazioni Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del Gestore delle processore / Gestore della periferiche/ Scheduler(s) memoria dispositivi

Dettagli

Architettura dei Calcolatori elettronici

Architettura dei Calcolatori elettronici Architettura dei Calcolatori elettronici CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Dal punto di vista architetturale un calcolatore

Dettagli

Lezione 13: Il linguaggio assembly di LC-3

Lezione 13: Il linguaggio assembly di LC-3 Lezione 13: Il linguaggio assembly di LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 30 Maggio 2012 Abbiamo visto... L ISA di LC-3; Ogni istruzione è identificata da un insieme di 1 e

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria

Dettagli

Lab 01 Introduzione a Codelite

Lab 01 Introduzione a Codelite Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2011/2012 Lab 01 Introduzione a Codelite Lab01

Dettagli

Modi di indirizzamento del processore MC68000 (parte prima)

Modi di indirizzamento del processore MC68000 (parte prima) Corso di Calcolatori Elettronici I A.A. 2011-2012 Modi di indirizzamento del processore MC68000 (parte prima) Lezione 21 Prof. Antonio Pescapè Università degli Studi di Napoli Federico II Facoltà di Ingegneria

Dettagli

Sistemi Operativi. Introduzione all architettura IA-32 Lez. 16. Corso: Sistemi Operativi Danilo Bruschi A.A. 2010/2011

Sistemi Operativi. Introduzione all architettura IA-32 Lez. 16. Corso: Sistemi Operativi Danilo Bruschi A.A. 2010/2011 Sistemi Operativi Introduzione all architettura IA-32 Lez. 16 1 Microprocessori Intel Nel 1979 Intel introduce la famiglia dei microprocessore 8086 8086, 8087, 8088, e 80186 Processori a 16-bit con registri

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli