Algoritmi, Strutture Dati e Programmi. UD 2.c: Linguaggi a Basso Livello

Documenti analoghi
Linguaggio Assembly e linguaggio macchina

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

Lezione 15 Il Set di Istruzioni (1)

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Linguaggio Assembly e linguaggio macchina

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

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

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

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

LINGUAGGI DI ALTO LIVELLO

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggio Assembly e linguaggio macchina

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO

Lecture 2: Prime Istruzioni

Linguaggi di Programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

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

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

Modulo 1: Le I.C.T. UD 1.4c: Il Processore

UD 1.4c: Il Processore IL MICROPROCESSORE

Linguaggi di alto livello, compilatori e interpreti

Richiami sull architettura del processore MIPS a 32 bit

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Il linguaggio macchina

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

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

Introduzione alla programmazione

Linguaggi e moduli. Dott. Franco Liberati

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

I Linguaggi di Programmazione

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Richiami sull architettura del processore MIPS a 32 bit

Il Software programmabili programma algoritmo

ISA (Instruction Set Architecture) della CPU MIPS

Il Processore. Informatica di Base -- R.Gaeta 27

Introduzione alla programmazione. Walter Didimo

Il linguaggio di programmazione Python

Istruzioni di trasferimento dati

Linguaggi di Programmazione

Pag. 2. Somma binaria. Somma binaria. Somma binaria. Altre operazioni aritmetiche. La somma si può fare colonna per colonna

L'architettura del processore MIPS

Sistemi di Elaborazione delle Informazioni

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Linguaggi di Programmazione

Calcolatori Elettronici

Architettura hardware

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

MIPS & SPIM. Modulo del Corso di Architettura degli Elaboratori. Nicola Paoletti. Università di Camerino Scuola di Scienze e Tecnologie

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

ALGORITMI: PROPRIETÀ FONDAMENTALI

PROBLEMI ALGORITMI E PROGRAMMAZIONE

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

La Rappresentazione Dell informazione

Elementi di informatica

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Università degli Studi di Cassino

Corso di Informatica Modulo T2 1 - Linguaggi e macchine

Architettura degli Elaboratori

Fondamenti di programmazione!! Parte 2!

Il processore: unità di controllo

Calcolatori Elettronici A a.a. 2008/2009

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Il Processore: l unità di controllo

Rappresentazione dei numeri interi in un calcolatore

Un quadro della situazione. Lezione 13 Il Set di Istruzioni (1) Organizzazione della lezione. Dove siamo nel corso. Cosa abbiamo fatto

Prestazioni 1. Prestazioni 2. Prestazioni 3

Programmazione strutturata

Introduzione alla Programmazione. Giselda De Vita

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Linguaggi, compilatori e interpreti

Il modello di von Neumann

Elementi di programmazione

Il linguaggio Assembly

Informatica Generale Andrea Corradini I linguaggi di programmazione

Istruzioni assembler Istruzione N Registri

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Macchine Astratte. Luca Abeni. February 22, 2017

Architettura dei computer

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Calcolatori Elettronici

Arithmetic and Logic Unit e moltiplicatore

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

ISA e linguaggio macchina

Componenti di un processore

Componenti e connessioni. Capitolo 3

Università degli Studi di Roma La Sapienza

Laboratorio di Architettura degli Elaboratori

Linguaggi di programmazione

Transcript:

Algoritmi, Strutture Dati e Programmi : Linguaggi a Basso Livello Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno LINGUAGGI DI PROGRAMMAZIONE A BASSO LIVELLO Curtin, cap. 12.2 1

I LIVELLI DEI LINGUAGGI Ma che cos è un programma? E un insieme di istruzioni E una procedura o meglio un algoritmo che viene eseguito dalla macchina le permette di portare a termine le operazioni che le abbiamo richiesto Il programma per essere comprensibile deve dare istruzioni o fare dichiarazioni usando un linguaggio che la macchina possa capire # 4 Prof Alberto Postiglione Università Salerno 2

I linguaggi di programmazione Possono essere più vicini al modo di pensare del programmatore o a quello della macchina Sono scritti in una lingua coerente e priva di ambiguità Comprenderne i principi è semplice, ma diventare un bravo programmatore lo è meno Maggiore è la distanza del linguaggio dal linguaggio macchina e la vicinanza al linguaggio naturale, più alto sarà il livello del linguaggio # 5 Prof Alberto Postiglione Università Salerno I livelli dei linguaggi Linguaggi ad altissimo livello (dichiarativi): si dice al computer cosa si vuole senza specificare come deve fare per operare (es.: SQL, Lisp, Prolog, ecc.) Linguaggi ad alto livello: più vicini al nostro modo di comprendere e impostare problemi, più facili da imparare e da trasferire e da portare su un altro computer (es.: HTML, Java, C++, Visualbasic, ecc.) Linguaggi a basso livello: vicini al linguaggio macchina e all architettura fisica del computer (es.: Assembler) Linguaggio macchina: usa solo 0 e 1 ed è comprensibile direttamente dall hardware, ma molto difficile per l uomo # 6 Prof Alberto Postiglione Università Salerno 3

I livelli dei linguaggi # 7 Prof Alberto Postiglione Università Salerno I livelli dei linguaggi Linguaggio macchina stringhe di bit corrispondenti ad istruzioni, operandi, etichette ed indirizzi di memoria. Strettamente legato alla macchina. Persone in grado di manipolare simboli (parole) più che sequenze di cifre Linguaggio assembler Rappresentazione simbolica del linguaggio macchina, più comprensibile perché utilizza simboli invece di stringhe di bit. Linguaggi di alto livello Linguaggio simile a quello naturale, il programmatore si astrae dai dettagli della macchina. # 8 Prof Alberto Postiglione Università Salerno 4

I livelli dei linguaggi # 9 int main(int argc, char *argv[]) { int i; int sum=0; for (i=0; i <= 100; i++) sum = sum + i; printf( The sum from 0.. 100 is %d\n, sum); } Prof Alberto Postiglione Università Salerno Procedurale vs. Dichiarativo Linguaggi procedurali: Forniscono al computer una serie di ordini su cosa debba fare e in quale circostanza. L aspetto della descrizione del problema, quando esiste è minimizzato: il computer non sa niente Procedurali: Cobol, Fortran, Pascal, Basic, C Linguaggi dichiarativi: Descrive, dichiara quali sono i dati del problema, fornisce le regole che si possono seguire e lascia che sia il computer a decidere come agire. Possono essere più faticosi per il computer perché deve derivare da solo le procedure da adottare # 10 Prof Alberto Postiglione Università Salerno 5

Fra i due litiganti Object oriented La caratteristica principale degli OOL è la modularità: certe porzioni di programma si possono usare in varie occasioni E utile per costruire tali programmi partire dagli oggetti e dalle loro proprietà interne e di relazione con gli altri oggetti La programmazione a oggetti funziona bene nei sistemi operativi grafici (a icone) Ognuno degli elementi di Windows, per es. icone, finestre, pulsanti, menù sono altrettanti oggetti che hanno proprietà e relazioni gli uni con gli altri # 11 Prof Alberto Postiglione Università Salerno L INSIEME DELLE ISTRUZIONI DEL PROCESSORE 6

L Insieme delle Istruzioni del Processore Ogni processore è in grado di eseguire solo poche istruzioni elementari quali: Somma di due numeri (già la somma di tre numeri viene effettuata tramite due somme elementari) Confronto tra due numeri con individuazione del fatto che ci sia o meno differenza (non tutti i processori sanno distinguere in modo immediato, invece, quale dei due precede l altro) Spostamento dei bit all interno di una parola di qualche posizione a destra o a sinistra. poche altre ancora # 13 Prof Alberto Postiglione Università Salerno L Insieme delle Istruzioni del Processore Ogni famiglia di calcolatori ha un proprio linguaggio I linguaggi sono come dialetti regionali derivati da un unica radice Perché? Costruiti su tecnologie basate sugli stessi principi fondamentali Esistono operazioni base comuni Apprendere un linguaggio facile apprendere gli altri # 14 Prof Alberto Postiglione Università Salerno 7

L Insieme delle Istruzioni del Processore Ogni istruzione del processore è composta da più operazioni elementari che accedono in momenti successivi alle risorse del computer (ad esempio prima al contenuto dell istruzione, poi alla memoria centrale, poi all ALU ). Quasi mai la singola istruzione del processore è eseguita in un solo ciclo di clock. Ad esempio, per effettuare la somma di due numeri Bisogna leggere il primo addendo Bisogna leggere il secondo addendo Bisogna eseguire la somma Bisogna memorizzare la somma E potrebbe darsi che alcune di queste mini-operazioni richieda più cicli di clock per essere completata. # 15 Prof Alberto Postiglione Università Salerno L Insieme delle Istruzioni del Processore Parole del linguaggio: Istruzioni Vocabolario di un calcolatore: Insieme delle istruzioni. Quanto più esso è povero tante più parole saranno necessarie per descrivere un concetto, ma tanto più esse saranno corte e quindi veloci da eseguire, in quanto richiedono pochi impulsi di clock per essere completate. # 16 Prof Alberto Postiglione Università Salerno 8

Tipi di Istruzioni Logico-aritmetiche Esempio: Valore assoluto, Somma, AND, Divisione, Moltiplicazione, NOR, OR, XOR, shift, rotazione, sottrazione Trasferimento dati Caricamento di registri dalla memoria e viceversa. Confronto Confronto tra due dati. Non effettuano azioni. Esempio: Set less than Salto Può essere assoluto o condizionato; se è condizionato è spesso preceduto da istruzione di confronto. Esempio: Branch if equal/not equal, Jump to register, Jump # 17 Prof Alberto Postiglione Università Salerno Tipi di Istruzioni Salto a subroutine, ritorno da subroutine Deve salvare tutte le informazioni correnti ed eseguire un altro pezzo di programma (subroutine). L istruzione di ritorno da subroutine ritorna ad eseguire il programma da dove lo aveva lasciato precedentemente. Istruzioni di I/O Trasferire o ad acquisire dati dall esterno del sistema. Simili alle istruzioni di trasferimento dati, utilizzano un codice diverso e particolari indirizzi. Istruzioni varie Ad esempio chiamate di sistema, gestione delle interruzioni, ecc # 18 Prof Alberto Postiglione Università Salerno 9

LINGUAGGIO MACCHINA Linguaggio Macchina Per gestire hardware bisogna parlare il linguaggio del calcolatore Linguaggio perché presenta Parole (cioè le istruzioni) Sintassi (regole di combinazione delle parole per generare frasi corrette) Sintassi di un linguaggio di programmazione Molto semplice (poche regole) Molto rigorosa (per evitare ogni tipo di ambiguità) # 20 Prof Alberto Postiglione Università Salerno 10

Istruzioni in Linguaggio Macchina In un linguaggio macchina, ogni istruzione è una sequenza di cifre binarie Totalmente illeggibile per l uomo Perfettamente non ambiguo per la macchina Un istruzione è formata da un codice operativo uno o più operandi Molti processori mantengono costante il numero di operandi per ogni istruzione (ad esempio le istruzioni aritmetiche ammettono sempre e solo 3 operandi) # 21 Prof Alberto Postiglione Università Salerno Istruzioni in Linguaggio Macchina Normalmente, gli operandi risiedono in Memoria centrale In fase di esecuzione ogni operando deve essere portato dalla memoria centrale in un registro del processore # 22 Prof Alberto Postiglione Università Salerno 11

Istruzioni in Linguaggio Macchina Istruzione in LM è una successione di 32 bits rappresentabile da un numero La funzione di questo numero è di codifica (rappresentazione di informazioni), non è un numero vero e proprio Ogni istruzione è scomponibile in frammenti più piccoli, ognuno dei quali rappresenta un tipo di informazione (codice operativo, una costante, il numero di un registro). Le istruzioni si distinguono per il valore contenuto nel primo campo In base ad opcode l hardware sa come trattare il resto dell istruzione # 23 Prof Alberto Postiglione Università Salerno Istruzioni in Linguaggio Macchina L istruzione che somma due numeri che sono stati già trasferiti dalla RAM nei registri numero 17 e 18 e memorizza il risultato nel registro numero 8 è rappresentabile come segue: 00000010001100100100000000100000 000000 10001 10010 01000 00000 100000 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits In decimale: 0 17 18 8 0 32 # 24 Prof Alberto Postiglione Università Salerno 12

Linguaggi macchina: problemi Sono specifici della macchina Occorre conoscere l architettura della macchina per scrivere programmi I programmi non sono trasportabili I programmatori si specializzano nel cercare efficienza su una macchina specifica, anziché concentrarsi sul problema Istruzioni e operandi sono rappresentati in forma numerica I codici sono poco leggibili e quindi difficilmente modificabili I programmi sono facilmente soggetti ad errori # 25 Prof Alberto Postiglione Università Salerno Linguaggio Macchina Il Linguaggio Macchina non è facilmente utilizzabile Binary machine language program (for MIPS) 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000 Un programmatore utilizza una versione più ad alto livello del LM: il linguaggio Assembler # 26 Prof Alberto Postiglione Università Salerno 13

LINGUAGGIO ASSEMBLER Linguaggio Assembler Linguaggio simbolico che utilizza simboli invece che bits. I simboli associano nomi ai codici operativi o i riferimenti ai registri. Permette di utilizzare etichette invece che indirizzi fisici Le istruzioni in Assembler sono quasi tutte in corrispondenza 1<->1 con quelle in linguaggio macchina # 28 Prof Alberto Postiglione Università Salerno 14

Programma in Linguaggio Macchina Calcolo e stampa della somma dei quadrati dei numeri compresi tra 1 e 100. Programma in LM # 29 Prof Alberto Postiglione Università Salerno Programma in Linguaggio Assembler Una prima rappresentazione simbolica del programma in LM visto in precedenza è la seguente Operazioni e operandi sono rappresentati in maniera simbolica. # 30 Prof Alberto Postiglione Università Salerno 15

Programma in Linguaggio al alto livello Il formato precedente è ancora difficile da seguire perché: Usa molte piccole operazioni per eseguire compiti semplici I costrutti per il controllo del flusso sono realizzati con confronti e salti (più difficili da leggere) # 31 Prof Alberto Postiglione Università Salerno Programma in Linguaggio al alto livello Linguaggio C : Linguaggio Pascal : Program somma; Var i, somma : integer; Begin somma := 0; for i:=1 to 100 do somma := somma + i; write ( La somma dei primi 100 numeri vale:, somma); End. #include <stdio.h> int main (int argc, char *argv[]) { int i; } int sum = 0; for (i = 0; i <= 100; i = i + 1) sum = sum + i; printf ("The sum from 0.. 100 is %d\n", sum); # 32 Prof Alberto Postiglione Università Salerno 16

Esempio 2 PASCAL: # 33 x := h + x ASSEMBLER(*) : lw 8, 1200 add 8, 18, 8 sw 8, 1200 LINGUAGGIO MACCHINA(*) (binario) 100011 01001 01000 0000 0100 1011 0000 000000 10010 01000 01000 00000 010000 101011 01001 01000 0000 0100 1011 0000 Cioè: 10001101001010000000010010110000 00000010010010000100000000010000 10101101001010000000010010110000 (*) Si suppone che il registro 8 contiene x e che il registro 18 contiene h Prof Alberto Postiglione Università Salerno Assemblatore Uno strumento che traduce programmi scritti nel linguaggio assembler in linguaggio macchina. L assembler legge un file sorgente in assembler produce un file oggetto contenente insieme di istruzioni in LM, di dati e di informazioni necessarie per il caricamento in memoria delle istruzioni # 34 Prof Alberto Postiglione Università Salerno 17

Quando usare un linguaggio Basso Livello Velocità di esecuzione o occupazione di memoria sono critiche programmazione di controller di processi e macchinari (anche real-time) o computer embedded (es controllo freni auto) programmazione di apparati speciali: Portable Devices Telefonini cellulari Schede Smart Card, Approccio ibrido: parti critiche di un programma in Assembler e le altre in HLL Accedere a caratteristiche hardware non accessibili ad un linguaggio ad alto livello. # 35 Prof Alberto Postiglione Università Salerno Svantaggi di un linguaggio a Basso Livello I programmi sono più lunghi della versione in linguaggio ad alto livello, spesso di un fattore moltiplicativo elevato (fattore di espansione) Produttività di un programmatori si misura in linee codice prodotte in unità di tempo Programmatori scrivono più o meno lo stesso numero di linee di codice per unità di tempo, indipendentemente dal linguaggio usato scrivere in Assembler è più costoso, in termini di tempo, di qualche fattore rispetto allo scrivere con linguaggi ad alto livello. Leggibilità del codice e probabilità di errore peggiorano con l aumentare delle linee di codice # 36 Prof Alberto Postiglione Università Salerno 18