Il software Linguaggio Macchina Linguaggio Assembly Linguaggio

Il software
Linguaggio Macchina
Linguaggio Assembly
ƒ Rende il calcolatore estremamente versatile
ƒ Evoluzione del software:
ƒ Insieme di istruzioni eseguibili dalla CPU
ƒ Dipende strettamente dalla CPU:
ƒ Una prima evoluzione: uso di simboli al
posto delle sequenze binarie
ƒ Istruzioni, dati, indirizzi sono sostituiti
da codici mnemonici
ƒ Più immediato da utilizzare rispetto al
linguaggio macchina
ƒ linguaggi di programmazione sempre più:
ƒ è cablato al suo interno, ogni istruzione
genera una sequenza di segnali di controllo
ƒ svincolati dall'hardware
ƒ vicini al linguaggio naturale
ƒ La scrittura dei programmi è complessa:
ƒ sistemi operativi
ƒ insieme di programmi per la gestione efficiente delle
risorse
ƒ rendono "amichevole" l'interazione uomo-macchina
Fondamenti di Informatica
1
Linguaggio Assembly: svantaggi
Fondamenti di Informatica
2
ƒ diverso per ogni processore
ƒ È complesso da utilizzare:
ƒ ogni istruzione esegue un'operazione
elementare
ƒ gestione dell'I/O difficile
ƒ non si possono definire strutture dati
complesse
3
ƒ Consentono di descrivere il problema in modo
intuitivo ed espressivo
ƒ Permettono di trattare con facilità:
ƒ formule matematiche
ƒ operazioni di I/O
ƒ strutture dati complesse
ƒ Mettono a disposizione costrutti logici
ƒ procedure e funzioni
ƒ strutture di controllo del flusso
ƒ I programmi sono più leggibili e documentabili
4
Fondamenti di Informatica
5
Linguaggi di alto livello
Software di base
ƒ Hanno caratteristiche diverse: offrono
forme espressive appropriate per alcuni
problemi specifici
ƒ Tra il linguaggio macchina (basso livello) e
i linguaggi evoluti (alto livello) esiste uno
strato di software
ƒ Esso svolge funzioni di base:
ƒ es: FORTRAN (problemi scientifici), COBOL
(problemi commerciali), BASIC, Pascal, C
7
Fondamenti di Informatica
Fondamenti di Informatica
6
Esecuzione dei programmi
ƒ traduzione di linguaggi da alto a basso livello
ƒ comunicazione tra i vari sottosistemi hardware
ƒ gestione e distribuzione delle risorse
ƒ Per i linguaggi più diffusi esiste il
compilatore per quasi tutti i calcolatori
presenti sul mercato
Fondamenti di Informatica
Fondamenti di Informatica
Linguaggi di alto livello
Linguaggi di basso livello
ƒ Consentono di accedere direttamente alle
funzionalità del calcolatore
ƒ Specificano solo le operazioni elementari
che l'elaboratore può eseguire
ƒ Dipendono dalle caratteristiche
architetturali
ƒ Sono più orientati alla macchina che ai
problemi da trattare
ƒ Non è portabile:
Fondamenti di Informatica
ƒ istruzioni formate da sequenze di 0 e 1
(codici operativi, dati, indirizzi)
8
ƒ L'esecuzione di un programma scritto
con un linguaggio ad alto livello è
preceduta dai seguenti passi:
ƒ traduzione in linguaggio macchina
ƒ collegamento con programmi di supporto
(calcoli, comunicazione con periferiche,…)
ƒ caricamento in memoria
Fondamenti di Informatica
9
Traduzione in
linguaggio macchina
Compilatori e Interpreti
ƒ Esistono due modi per eseguire i 3 passi
menzionati:
ƒ in sequenza, dopo il termine del passo
precedente (compilatori)
ƒ in sequenza, prima del termine del passo
precedente (interprete, detto anche
simulazione software)
Fondamenti di Informatica
ƒ Viene suddivisa in 2 passi:
ƒ Il codice oggetto così formato può
ancora contenere dei simboli irrisolti
ƒ analisi (lessicale, grammaticale, contestuale)
ƒ trasformazione del programma sorgente in
programma oggetto (forma più vicina al
linguaggio macchina)
ƒ riferimenti esterni a programmi di servizio
(accesso alle periferiche, calcoli matematici,...)
ƒ Il Linker serve per collegare diversi
moduli oggetto
10
Caricamento in memoria
ƒ Vengono caricati anche i programmi di
supporto, se necessari
ƒ Il loader stabilisce la zona di memoria
in cui caricare il programma
Fondamenti di Informatica
Collegamento con
programmi di supporto
13
Fondamenti di Informatica
11
Fondamenti di Informatica
12