La programmazione dei calcolatori. L insieme delle istruzioni. Vantaggi e svantaggi dell assembler. Benefici dei linguaggi ad alto livello
|
|
- Lucia Romagnoli
- 7 anni fa
- Visualizzazioni
Transcript
1 La programmazione dei calcolatori L insieme delle istruzioni Architetture dei Calcolatori (lettere A-I) Linguaggio macchina (codifica con numeri binari) Linguaggio direttamente comprensibile dal calcolatore Attività di programmazione lunga e noiosa Facile commettere errori Linguaggio assembler (o assembly) Rappresentazione simbolica del linguaggio macchina Più comprensibile del linguaggio macchina (simboli anziché sequenze di bit) Tradotto dall assemblatore in linguaggio macchina Dalla forma simbolica dell istruzione macchina al corrispondente formato binario Linguaggi ad alto livello Tradotti dal compilatore in assembler Valeria Cardellini 1 Benefici dei linguaggi ad alto livello Notazione vicina al linguaggio corrente ed alla notazione algebrica (maggiore espressività e leggibilità) Incremento di produttività Facilitano la programmazione, svincolandola dalla conoscenza dei dettagli architetturali della macchina utilizzata Indipendenza dalle caratteristiche peculiari dell architettura (processore) su cui il programma va eseguito (portabilità) Ideati non per essere compresi direttamente da macchine reali, ma da macchine astratte, in grado di effettuare operazioni più di alto livello rispetto alle operazioni elementari dei processori reali Permettono l uso di librerie di funzionalità già scritte (riusabilità del codice) Valeria Cardellini 2 Vantaggi e svantaggi dell assembler Vantaggio: la dipendenza dall architettura del calcolatore permette Ottimizzazione delle prestazioni (maggiore efficienza) Programmi (potenzialmente) più compatti Massimo sfruttamento delle potenzialità dell hardware sottostante Importante per Programmare controller di processi e macchinari (anche real-time) Programmazione di apparati limitati (embedded computer, dispositivi portatili, telefonini cellulari, ) Principali svantaggi della programmazione Strutture di controllo in forme limitate (minore espressività) Necessario conoscere i dettagli dell architettura Mancanza di portabilità su architetture diverse Difficoltà di comprensione, possibile lunghezza maggiore, facilità di errore rispetto a programmi scritti in linguaggio ad alto livello (minore produttività del programmatore) Valeria Cardellini 3
2 Compilazione Nella prima fase, il programma ad alto livello viene tradotto nel linguaggio assembler utilizzando un apposito programma detto compilatore Dopo la fase di compilazione, il programma scritto il linguaggio assembler viene tradotto in linguaggio macchina utilizzando un apposito programma detto assemblatore (assembler) Spesso con il termine compilazione si indica l intero processo di traduzione da linguaggio ad alto livello a linguaggio macchina (essendo l assemblatore spesso integrato con il compilatore) Il processo di compilazione Programma sorgente compilatore hello.c Programma in linguaggio assembler hello.s assemblatore Programma in linguaggio macchina (codice oggetto) caricatore hello.out Il programma sorgente è scritto in un linguaggio ad alto livello (ad es., C) Il codice oggetto, scritto in linguaggio macchina, viene memorizzato su disco Il caricatore (loader) carica il programma in memoria principale per l esecuzione Programma in memoria Valeria Cardellini 4 Valeria Cardellini 5 Il linker Il linker (link editor o collegatore) ha il compito di collegare tra loro vari moduli che compongono lo stesso programma Programma sorgente suddiviso in più file che vengono compilati separatamente creando diversi file oggetto Utilizzo di funzioni di libreria Il processo di compilazione (2) Programma sorgente compilatore Programma in linguaggio assembler Il linker collega tra loro i file contenenti il codice oggetto dei vari moduli che costituiscono il programma, unendovi anche il codice delle funzioni di libreria utilizzate, producendo un file contenente il codice eseguibile, memorizzato su disco assemblatore Oggetto: modulo in linguaggio macchina linker Oggetto: libreria di funzioni caricatore Valeria Cardellini 6 Eseguibile: programma in linguaggio macchina Programma in memoria Valeria Cardellini 7
3 Alcuni principi progettuali Le istruzioni sono codificate in forma binaria I programmi vengono immagazzinati in memoria insieme ai dati Concetto di programma memorizzato In memoria istruzioni e operandi, che devono essere entrambi trasferiti dalla memoria al processore Le istruzioni non sono di per sé distinguibili rispetto agli altri tipi di informazione in memoria Solo l interpretazione da parte del processore stabilisce se una data configurazione di bit è da considerarsi come un dato o un istruzione Storicamente Architettura introdotta nel 1946 da Von Neumann Opposta alla architettura Hardware, in cui lo spazio di memoria è separato per dati e programmi (impiegata in calcolatori destinati a specifici campi applicativi, ad es. elaborazione dei segnali) Valeria Cardellini 8 I principi della progettazione L obiettivo è avere un set di istruzioni che Faciliti la costruzione della macchina Semplicità per il progettista Faciliti la costruzione dei compilatori Ottimizzi i costi di produzione Permetta prestazioni elevate Competitività sul mercato Principio della semplicità della realizzazione: semplice significa economico (semplicità = regolarità) affidabile di facile apprendimento ed uso (per i programmatori) di facile traduzione (per i compilatori) Valeria Cardellini 9 Architettura MIPS Sviluppata e progettata a Stanford (USA) Progettata nei primi anni 80 Prodotta e sviluppata da MIPS Technologies negli anni 90 ( Tecnologia attualmente utilizzata da Sony (Playstation, Playstation 2, AIBO) Nintendo 64 Router CISCO Stampanti, macchine fotografiche digitali, palmtop Set-top box, DVD TV al plasma Rappresenta un buon modello architetturale per la didattica, perché è un architettura semplice da comprendere Valeria Cardellini 10 Operazioni aritmetiche Le informazioni sono codificate in dati I dati sono rappresentati da numeri Esempio Per effettuare a=b+c e a=b-c add a, b, c sub a, b, c Ogni istruzioni aritmetica in MIPS esegue solo una operazione e deve avere sempre 3 operandi Principio progettuale: la semplicità favorisce la regolarità Il prezzo della semplicità Per effettuare f = (g+h)-(i+j) add t0, g, h add t1, i, j sub f, t0, t1 # calcolo t0=g+h # calcolo t1=i+j # calcolo f=t0-t1 NB: gli operandi non sono ancora quelli reali Commento su ogni linea preceduto da # Valeria Cardellini 11
4 Gli operandi A differenza dei linguaggi ad alto livello, gli operandi devono provenire da speciali locazioni di memoria all interno del processore, dette registri Nei linguaggi ad alto livello non ci si preoccupa di dover portare i dati dalla memoria ai registri e dai registri alla memoria E compito del compilatore inserire le istruzioni necessarie Caratteristiche dei registri Elevata velocità di accesso In numero limitato Altro principio progettuale: piccolo = veloce Usando i registri Si riduce il traffico con la memoria L esecuzione del programma è più veloce Migliora la densità del codice I registri Il livello ISA dell architettura MIPS richiede che Gli operandi delle istruzioni provengano dai registri Architettura di tipo load-store (o registro-registro) Il processore possiede un numero limitato di registri Il processore MIPS possiede 32 registri di tipo general-purpose (GPR), ciascuno dei quali è composto da 32 bit (parola) Il processore MIPS possiede ulteriori 32 registri da 32 bit per le operazioni in virgola mobile (floating point), detti FPR Per convenzione, per denotare i registri si usano nomi simbolici preceduti da $ Convenzione MIPS per rappresentare i registri: $s0, $s1, per i registri che contengono variabili $t0, $t1, per i registri di uso temporaneo I registri possono anche essere indicati direttamente mediante il loro numero (0,, 31) preceduto da $ (quindi $0,, $31) Valeria Cardellini 12 Valeria Cardellini 13 Il ruolo del compilatore Consideriamo il seguente segmento di programma C che utilizza 5 variabili f = (g+h)-(i+j) Il compilatore associa alle variabili presenti nel programma i registri presenti nel processore Ad esempio, alle variabili f, g, h, i e j sono associati i registri $s0, $s1, $s2, $s3 e $s4 Il compilatore introduce due variabili temporanee (t0 e t1) che associa a due registri temporanei $t0 e $t1 add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 # g+h # i+j # f = (g+h)-(i+j) Le operazioni e gli operandi Le istruzioni MIPS consentono operazioni di tipo diverso classificabili nelle quattro categorie Istruzioni aritmetiche-logiche (es., somma, moltiplicazione, AND) Istruzioni di trasferimento da/verso memoria Istruzioni per il controllo del flusso del programma Istruzioni di supporto alle procedure Gli operandi Accesso ai registri del processore Accesso alla memoria Necessarie due modalità di trasferimento tra memoria e registri del processore Load (caricamento) o read (lettura) Store (memorizzazione) o write (scrittura) Uso di costanti Valeria Cardellini 14 Valeria Cardellini 15
5 Istruzioni aritmetiche-logiche In MIPS un istruzione aritmetico-logica possiede tre operandi: i due registri contenenti i valori da elaborare (registri sorgente) ed il registro contenente il risultato (registro destinazione) L ordine degli operandi è fisso: prima il registro contenente il risultato dell operazione e poi i due operandi Esempio: istruzione add Serve per sommare il contenuto di due registri sorgente rs e rt e porre in rd la somma del contenuto di rs e rt add rd, rs, rt Esempio: istruzione sub Serve per sottrarre il contenuto di due registri sorgente rs e rt e porre in rd la differenza del contenuto di rs e rt sub rd, rs, rt Valeria Cardellini Indirizzamento della memoria nel MIPS. Memoria $0 $1 $31. Processore Memoria come un array monodimensionale, le cui locazioni sono indicizzate tramite indirizzi Dimensione della parola pari a 32 bit (4 byte) L indirizzamento di una parola è legato a 4 byte (vincolo dell allineamento) Quindi gli indirizzi delle parole differiscono di 4 Memoria formata da 2 30 parole Per motivi di efficienza, è possibile l indirizzamento a livello dei singoli byte che compongono una parola Valeria Cardellini 17 Ordinamento dei byte L accesso è generalmente con indirizzamento del byte L indirizzo di una parola corrisponde all indirizzo di uno dei byte all interno della parola Esistono due convenzioni per ordinare i byte all interno di una parola (endianess) Big Endian: il byte il cui indirizzo è x 00 è nella posizione più significativa della parola (big end) Little Endian: il byte il cui indirizzo è x 00 è nella posizione meno significativa della parola (little end) Esempio: parola di 32 bit Little Endian Indirizzo Byte Byte Word Word Intel 80x06 è Little Endian, MIPS può essere sia Big Endian sia Little Endian in dipendenza del valore logico su di un pin Big Endian Valeria Cardellini Allineamento dei byte e terminologia L allineamento richiede che la parola inizi ad un indirizzo multiplo della sua dimensione Allineato In MIPS, allineamento della parola ad un indirizzo multiplo di 4 (equivale a indirizzo mod 4 = 0) Half word (16 bit) allineata ai multipli di 2 Non allineato La mancanza di allineamento causa un incremento della complessità dell hardware ed un numero maggiore di accessi in memoria Terminologia delle sequenze di bit di particolare lunghezza 4 bit: nibble 8 bit: byte 16 bit: half-word 32 bit: word 64 bit: double-word Valeria Cardellini 19
6 Istruzione di trasferimento dati MIPS fornisce due istruzioni di base per il trasferimento di dati tra registri del processore e memoria lw (load word): per trasferire una parola di memoria in un registro del processore sw (store word): per trasferire il contenuto di un registro del processore in una parola di memoria Le istruzioni lw e sw richiedono come argomento l indirizzo della locazione di memoria sulla quale devono operare Valeria Cardellini 20 Istruzioni load e store L istruzione di load trasferisce una copia dei dati contenuti in una specifica locazione di memoria ai registri del processore, lasciando inalterata la parola di memoria Il processore invia l indirizzo della locazione desiderata alla memoria e richiede un operazione di lettura del suo contenuto La memoria effettua la lettura dei dati memorizzati all indirizzo specificato e li invia al processore L istruzione di store trasferisce il contenuto di un registro del processore in una specifica locazione di memoria, sovrascrivendo il contenuto precedente di quella locazione Il processore invia l indirizzo della locazione desiderata alla memoria insieme ai dati che vi devono essere scritti, e richiede un operazione di scrittura La memoria effettua la scrittura dei dati all indirizzo specificato Valeria Cardellini 21 Istruzione lw In MIPS, l istruzione lw ha tre argomenti Il registro destinazione in cui caricare la parola letta dalla memoria Una costante o spiazzamento (offset) Un registro base (base register) che contiene il valore dell indirizzo base (base address) da sommare all offset Indirizzamento registro base (o con spiazzamento) L indirizzo della parola di memoria da caricare nel registro è ottenuto sommando il contenuto del registro base alla costante Esempio lw $s1, 100($s2) # $s1 = M[$s2+100] Al registro destinazione $s1 è assegnato il valore contenuto all indirizzo di memoria ($s2+100) Istruzione sw In MIPS, l istruzione sw ha tre argomenti, analogamente all istruzione lw Il registro sorgente, il cui contenuto deve essere scritto in memoria Una costante o spiazzamento (offset) Un registro base (base register) che contiene il valore dell indirizzo base (base address) da sommare all offset Indirizzamento registro base (o con spiazzamento) L indirizzo della parola di memoria da sovrascrivere è ottenuto sommando il contenuto del registro base alla costante Esempio sw $s1, 100($s2) # M[$s2+100] = $s1 Alla locazione di memoria di indirizzo ($s2+100) è assegnato il valore contenuto nel registro sorgente $s1 Valeria Cardellini 22 Valeria Cardellini 23
7 Istruzioni lw e sw: esempio di compilazione Codice C: A[12] = h+a[8]; Supponiamo che: La variabile h è associata al registro $s2 L indirizzo del primo elemento dell array (base address) è contenuto nel registro $s3 Strutture dati (ad es. array) sono allocate in memoria Codice MIPS: lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48($s3) # $t0=m[$s3+32] # $t0=$s2+$t0 # M[$s3+48]=$t0 Valeria Cardellini 24 Array: esempio Codice C: g = h+a[i]; Supponiamo che: A è un array di 100 word Le variabili g, h e i sono associate rispettivamente ai registri $s1, $s2 e $s4 L indirizzo del primo elemento dell array (base address) è contenuto nel registro $s3 L elemento i-esimo dell array sarà nella locazione di memoria di indirizzo ($s3 + 4*i) i è l indice dell array ad alto livello Il fattore 4 dipende dall indirizzamento della memoria nel MIPS A[0] $s3 A[1] $s3+4 A[2] $s3+8. Valeria Cardellini 25 Array: esempio (2) Codice MIPS: Caricamento dell indirizzo di A[i] nel registro temporaneo $t1 add $t1, $s4, $s4 add $t1, $t1, $t1 add $t1, $t1, $s3 Trasferimento di A[i] nel registro temporaneo $t0 lw $t0, 0($t1) # $t0=a[i] Somma tra h e A[i] e risultato in g add $s1, $s2, $t0 # $t1=2*i # $t1=4*i # $t1=ind di A[i] # g=h+a[i] Register spilling In genere i programmi usano più variabili di quanti sono i registri del processore Il compilatore cerca di mantenere le variabili usate più frequentemente nei registri e le altre variabili in memoria, usando istruzioni di load/store per trasferire le variabili tra registri e memoria Il tempo di accesso ai registri è minore del tempo di accesso alla memoria La tecnica di mettere le variabili meno usate (o usate successivamente) in memoria viene detta register spilling Valeria Cardellini 26 Valeria Cardellini 27
8 Rappresentazione dei registri Una convenzione per assegnare nomi dei registri e numeri corrispondenti I registri $s0, $s1,, $s7 (detti registri saved) Corrispondono ai registri $16, $17,, $23 I registri $t0, $t1,, $t7 (detti registri temporaries) Corrispondono ai registri $8, $9,, $15 Il registro $zero Corrisponde al registro $0 Contiene sempre il valore 0 Valeria Cardellini 28 Formato istruzioni aritmetiche La rappresentazione binaria di un istruzione assembler è composta da 32 bit (stessa dimensione della parola di memoria) Essa segue il formato di tipo R (istruzione register) per un istruzione logico-aritmetica tra registri Formato istruzioni di tipo R op rs rt rd shamt funct 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit Ai vari campi sono assegnati dei nomi mnemonici op: opcode (codice operativo), indica il tipo di istruzione rs: registro contenente il primo operando sorgente rt: registro contenente il secondo operando sorgente rd: registro destinazione contenente il risultato shamt: shift amount (scorrimento) funct: function, la variante specifica dell operazione indicata nel campo op Valeria Cardellini 29 Istruzioni di tipo R: esempio op rs rt rd shamt funct 6 bit 5 bit 5 bit 5 bit 5 bit 6 bit add $t0, $s1, $s2 non usato bit 5 bit 5 bit 5 bit 5 bit 6 bit bit 5 bit 5 bit 5 bit 5 bit 6 bit Valeria Cardellini 30 Formato istruzioni di tipo I Il formato di tipo R non è adatto a rappresentare istruzioni di tipo load/store All offset sarebbe riservato un campo di 5 bit (al massimo costanti di dimensione pari a 32) Si usa un formato diverso, detto di tipo I (istruzione immediate), sempre di 32 bit Formato istruzioni di tipo I op rs rt address 6 bit 5 bit 5 bit 16 bit Significato dei campi op: opcode, indica il tipo di istruzione rs: registro base rt: registro destinazione (load) o sorgente (store) address: spiazzamento (±2 15 byte o 2 13 parole rispetto all indirizzo indicato dal registro base) Valeria Cardellini 31
9 Istruzioni di tipo I: esempio op rs rt address 6 bit 5 bit 5 bit 16 bit lw $t0, 1000($s3) bit 5 bit 5 bit 16 bit bit 5 bit 5 bit 16 bit La memorizzazione del programma: esempio Codice C: A[300] = h+a[300]; Codice MIPS: lw $t0, 1200($t1) add $t0, $s2, $t0 sw $t0, 1200($t1) Assumendo che: $t1 è il registro base $s2 corrisponde a h Valeria Cardellini 32 Traducendo da decimale a binario si ottiene la rappresentazione binaria del programma Valeria Cardellini 33 Uso alternativo dell indirizzamento con spiazzamento L indirizzamento con spiazzamento prevede l uso di Indirizzo base contenuto nel registro base Spiazzamento specificato nell istruzione tramite una costante Esempio: lw $t0, 16($s0) Se $s0=100, in $t0 viene caricata la parola di memoria di indirizzo 116 In alternativa, si può invertire l uso del registro e della costante Indirizzo base specificato nell istruzione tramite una costante Spiazzamento contenuto nel registro indice (detto in precedenza registro base) Detto indirizzamento indicizzato o indicizzazione Esempio: lw $t0, 100($s0) Se $s0=16, in $t0 viene caricata la parola di memoria di indirizzo 116 I due usi dell indirizzamento con spiazzamento sono equivalenti? Valeria Cardellini 34 Uso alternativo dell indirizzamento con spiazzamento (2) La scelta di porre l indirizzo base nel registro (anziché nella costante) Permette di utilizzare 32 bit per indicare la locazione di inizio Quindi di accedere a tutta la memoria Viceversa, ponendo l indirizzo base nella costante Si possono utilizzare solo 16 bit per indicare la locazione di inizio (vedi formato delle istruzioni di tipo I) La scelta di porre lo spiazzamento nel registro Permette di scorrere l array incrementando l indice Da qui il nome di indirizzamento indicizzato e registro indice Valeria Cardellini 35
L insieme delle istruzioni
L insieme delle istruzioni Architetture dei Calcolatori (lettere A-I) La programmazione dei calcolatori Linguaggio macchina (codifica con numeri binari) Linguaggio direttamente comprensibile dal calcolatore
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
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
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
Richiami sull architettura del processore MIPS a 32 bit
Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC
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
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
Richiami sull architettura del processore MIPS a 32 bit
Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini Caratteristiche principali dell architettura del processore MIPS E un architettura RISC
Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
Calcolatori Elettronici
Calcolatori Elettronici Il linguaggio assemblativo MIPS (1) Istruzioni di ALU: operazioni ed operandi Trasferimenti tra memoria e CPU Vettori (1) Le costanti Livelli di astrazione s o f t w a r e H W Linguaggio
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
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
Architettura degli Elaboratori
Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni
Laboratorio di Architettura degli Elaboratori
Laboratorio di Architettura degli Elaboratori Dott. Massimo Tivoli Set di istruzioni del MIPS32: istruzioni aritmetiche e di trasferimento Istruzioni (Alcune) Categorie di istruzioni in MIPS Istruzioni
Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)
Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo
ISA (Instruction Set Architecture) della CPU MIPS
Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Uniersità degli Studi di Milano L16-20 1 Linguaggio macchina
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
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
DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI 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
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
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
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
Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly
Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore
Il processore: unità di elaborazione Architetture dei Calcolatori (lettere A-I) Progettazione dell unità di elaborazioni dati e prestazioni Le prestazioni di un calcolatore sono determinate da: Numero
Il linguaggio macchina
Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/33 Linguaggio
Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly
Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano
Linguaggi di programmazione
Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché
Università degli Studi di Cassino
Corso di Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 2007/2008 Francesco Tortorella Istruzioni di confronto Istruzione Significato slt $t1,$t2,$t3 if
Il Linguaggio Assembly: Gestione della memoria e controllo
Il Linguaggio Assembly: Gestione della memoria e controllo Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/42 Sommario L organizzazione
Linguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
Lecture 2: Prime Istruzioni
[http://www.di.univaq.it/muccini/labarch] Modulo di Laboratorio di Architettura degli Elaboratori Corso di Architettura degli Elaboratori con Laboratorio Docente: H. Muccini Lecture 2: Prime Istruzioni
Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.
di Cassino e del Lazio Meridionale Corso di MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 201/201 Francesco Tortorella Istruzioni di confronto Istruzione
Il processore: unità di elaborazione
Il processore: unità di elaborazione Architetture dei Calcolatori (lettere A-I) Progettazione dell unità di elaborazioni dati e prestazioni Le prestazioni di un calcolatore sono determinate da: Numero
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
Calcolatori Elettronici Parte VIII: linguaggi assemblativi
Anno Accademico 2013/2014 Calcolatori Elettronici Parte VIII: linguaggi assemblativi Prof. Riccardo Torlone Universita di Roma Tre Linguaggi di Programmazione Linguaggi ad alto livello Maggiore espressività
INFORMATICA. L informatica comprende:
Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione
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
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
Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica
Il calcolatore È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica ogni livello di descrizione è caratterizzato da una struttura rappresentante l organizzazione
La programmazione dei calcolatori. Architetture dei Calcolatori (Lettere. Benefici dei linguaggi ad alto livello. Vantaggi e svantaggi dell assembler
La programmazione dei calcolatori Architetture dei Calcolatori (Lettere A-I) Il Set di Istruzioni MIPS Prof. Francesco Lo Presti Linguaggio macchina (codifica con numeri binari) Linguaggio direttamente
Architettura dei calcolatori e sistemi operativi. Il processore Capitolo 4 P&H
Architettura dei calcolatori e sistemi operativi Il processore Capitolo 4 P&H 4. 11. 2015 Sommario Instruction Set di riferimento per il processore Esecuzione delle istruzioni Struttura del processore
21 March : ESERCITAZIONE 01 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA. I. Frosio
02: ESERCITAZIONE 01 21 March 2011 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA I. Frosio 1 SOMMARIO Organizzazione della memoria Istruzioni di accesso alla memoria Vettori Istruzioni
Architettura hardware
Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
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
Istruzioni assembler Istruzione N Registri
Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e
Linguaggi di programmazione. Parte VII. Traduzione e collegamento. Interpretazione. Traduzione
Linguaggi di programmazione Parte VII Traduzione e collegamento Linguaggi ad alto livello Maggiore espressività Maggiore produttività Migliore leggibilità Facilità di documentazione Minore controllo dell
Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato
Algoritmi, Strutture Dati e Programmi : Dati e Tipi di Dato Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Dati: Variabili e Costanti Un algoritmo (e il programma che ne è rappresentazione)
LINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
Il processore: unità di controllo
Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune
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
MIPS & SPIM. Modulo del Corso di Architettura degli Elaboratori. Nicola Paoletti. Università di Camerino Scuola di Scienze e Tecnologie
MIPS & SPIM Modulo del Corso di Architettura degli Elaboratori Nicola Paoletti Università di Camerino Scuola di Scienze e Tecnologie 10 Aprile 2013 AA 2012/2013 Informazioni utili (1/2) Email: nicola.paoletti@unicam.it
Il Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
Il linguaggio macchina
Università degli Studi di Palermo Facoltà di Ingegneria Il linguaggio macchina Edoardo Ardizzone & Ignazio Infantino Appunti per il corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Informatica
Linguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
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
; 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.
Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani (liverani@mat.uniroma3.it)
Linguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div
MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Istruzioni Significato add $t1, $t2, $t3 $t1 = $t2 + $t3 sub $t1, $t2, $t3 $t1 = $t2 - $t3 mult $t1, $t2 Hi,Lo = $t1*$t2 div
Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini
Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Progetto della CPU MIPS a 1 colpo di clock - Istruzioni da implementare - Unità
Capitolo 5 Elementi architetturali di base
Capitolo 5 Elementi architetturali di base Giuseppe Lami Istituto di Scienza e Tecnologie dell Informazione CNR Via Moruzzi, 1 - Pisa giuseppe.lami@isti.cnr.it Struttura - Unità di elaborazione e controllo
Il processore. Istituzionii di Informatica -- Rossano Gaeta
Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale
AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
Architettura dei calcolatori. Architettura dei calcolatori. Cos'è un computer?
Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Cos'è un computer? 3 Cos'è un computer? E' un dispositivo in grado di Elaborare
SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006
SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 26 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (8 punti)
Architettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
Esercitazione 1 Codifica e Rappresentazione dell Informazione Istruzioni Assembly MIPS
Esercitazione 1 Codifica e Rappresentazione dell Informazione Istruzioni Assembly MIPS Claudia Raibulet raibulet@disco.unimib.it Codifica e Rappresentazione dell Informazione Informazioni Generali (I)
Laboratorio di Calcolo Linguaggi di programmazione
Laboratorio di Calcolo Linguaggi di programmazione Software Insieme di istruzioni e dati trattati dal computer Le istruzioni possono essere a diversi livelli Istruzioni macchina: insieme limitato di funzioni
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
Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri
Concetti di Base sulla Programmazione Prof.Ing.S.Cavalieri 1 La Programmazione Dato un problema INFORMATICO, programmare significa: Definire i dati in ingresso e il risultato che si vuole raggiungere Definire
Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)
Processore Memoria Control (Parte di controllo) Datapath (Parte operativa) I/O Parte di Controllo La Parte Controllo (Control) della CPU è un circuito sequenziale istruzioni eseguite in più cicli di clock
Lezione4: MIPS e Istruzioni (1 Parte)
Architettura degli Elaboratori Lezione4: MIPS e Istruzioni (1 Parte) Michele Nappi mnappi@unisa.it http://www.biplab.unisa.it/ Alcune slide di questa lezione sono prodotte dal Prof. Luigi Palopoli AGENDA
Lezione 16. Il Software di base
Lezione 16 Software di base Il Software di base Con il termine software di base si intende l insieme dei programmai che consentono ad un utente di eseguire operazioni base come costruire e mandare in esecuzione
Lezione 15. L elaboratore Elettronico
Lezione 15 Architettura di un calcolatore L elaboratore Elettronico Un elaboratore elettronico è una macchina elettronica in grado di elaborare dati secondo le specifiche fornite da un algoritmo Internamente
Introduzione. Indice. Linguaggio macchina. Linguaggio assembler
Indice Linguaggio ad alto livello, linguagio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni aritmetiche, di trasferimento dati e di salto Conversione linguaggio assembler in linguaggio
Architettura dei calcolatori
Architettura dei calcolatori Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Architettura dei calcolatori 2 Cos'è un computer?
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
C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI
Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2
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
Architettura di tipo registro-registro (load/store)
Caratteristiche principali dell architettura del processore MIPS E un architettura RISC (Reduced Instruction Set Computer) Esegue soltanto istruzioni con un ciclo base ridotto, cioè costituito da poche
Università degli Studi di Cassino
Corso di MIPS: modello di programmazione Anno Accademico 2007/2008 Francesco Tortorella CPU Compito della CPU: eseguire istruzioni Le istruzioni costituiscono le operazioni primitiva eseguibili dalla CPU
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
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
Arithmetic and Logic Unit e moltiplicatore
Arithmetic and Logic Unit e moltiplicatore M. Favalli Engineering Department in Ferrara (ENDIF) ALU - multiplier Analisiesintesideicircuitidigitali 1 / 34 Sommario 1 Arithmetic and Logic Unit - ALU 2 Moltiplicatore
Elaborazione dell informazione
Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione
Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema
Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina
Laboratorio di Architettura lezione 5. Massimo Marchiori W3C/MIT/UNIVE
Laboratorio di Architettura lezione 5 Massimo Marchiori W3C/MIT/UNIVE Da Alto a Basso livello: compilazione Come si passa da un linguaggio di alto livello a uno di basso livello? Cioe a dire, come lavora
Somma di numeri binari
Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di
Università degli Studi di Roma La Sapienza
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Introduzione ai concetti ed al simulatore SPIM Indice degli argomenti Introduzione Assembler, compilatore, linker, programma
Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016
Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione
Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale
Analogico vs. Digitale LEZIONE II La codifica binaria Analogico Segnale che può assumere infiniti valori con continuità Digitale Segnale che può assumere solo valori discreti Analogico vs digitale Il computer
I formati delle istruzioni
Appunti di Calcolatori Elettronici Le istruzioni I formati delle istruzioni... 1 Criteri generali di progettazione dei formati delle istruzioni... 2 Cenni all indirizzamento... 4 Indirizzamento immediato...
Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
Calcolo numerico e programmazione Rappresentazione dei numeri
Calcolo numerico e programmazione Rappresentazione dei numeri Tullio Facchinetti 16 marzo 2012 10:54 http://robot.unipv.it/toolleeo Rappresentazione dei numeri nei calcolatori
Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori
Programma del corso Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Cos è un Calcolatore? Un computer (calcolatore) è una macchina
Linguaggi di programmazione
Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input
Valutazione delle prestazioni
Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Valutazione delle prestazioni Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di
Valutazione delle prestazioni. Valutazione delle prestazioni. Tempo di risposta e throughput. Prestazioni e tempo di esecuzione
Valutazione delle prestazioni Valutazione delle prestazioni Architetture dei Calcolatori (lettere A-I) Misura/valutazione di un insieme di parametri quantitativi per Quantificare le caratteristiche di
LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C