Linguaggi

34
Fondamenti di Informatica 1 Linguaggi • Diversi tipi di linguaggi: – Imperativi – Funzionali – Dichiarativi • Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina

description

Linguaggi. Diversi tipi di linguaggi: Imperativi Funzionali Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina. Linguaggio Macchina. Insieme di istruzioni eseguibili dalla CPU Dipende dalla CPU: - PowerPoint PPT Presentation

Transcript of Linguaggi

Page 1: Linguaggi

Fondamenti di Informatica 1

Linguaggi

• Diversi tipi di linguaggi:– Imperativi– Funzionali– Dichiarativi

• Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina

Page 2: Linguaggi

Fondamenti di Informatica 2

Linguaggio Macchina

• Insieme di istruzioni eseguibili dalla CPU

• Dipende dalla CPU:– cablata al suo interno, ogni istruzione

genera una sequenza di segnali di controllo

• Linguaggio di basso livello– si può accedere direttamente alle

funzionalità di base del calcolatore

Page 3: Linguaggi

Fondamenti di Informatica 3

Linguaggio Macchina

• Complesso da utilizzare:– ogni istruzione esegue un'operazione

semplicissima– esistono librerie con procedure

generali

• Gli altri linguaggi vengono "convertiti" in sequenze di istruzioni in linguaggio macchina

Page 4: Linguaggi

Fondamenti di Informatica 4

Linguaggio Macchina

• Il Linguaggio Macchina è estremamente efficiente

• I programmi sono:– più veloci– più corti– ma più complessi

Page 5: Linguaggi

Fondamenti di Informatica 5

Linguaggio Macchina

• La scrittura è complessa:– istruzioni formate da stringhe di 1 e 0:

quindi è necessario un insieme di simboli (Linguaggio Assembly)

– per referenziare le locazioni di memoria è necessario avere delle etichette

– necessario commentare ogni istruzione

Page 6: Linguaggi

Fondamenti di Informatica 6

Istruzioni Macchina

• Composte da:– etichette (per eliminare riferimenti ad indirizzi

fisici, facilitano le modifiche)– codici operativi (non può mai mancare)– operandi (0, 1 o 2)

START: MOV AX, BXCMP AX, 12hJZ EQUALINT 21hRET

EQUAL: MOV BL, 82h

Page 7: Linguaggi

Fondamenti di Informatica 7

Commenti

• Servono a rendere il programma più comprensibile al programmatore e a chi lo analizzerà in futuro

• Vengono ignorati dalla macchina• Devono essere utili ed esplicativi

Page 8: Linguaggi

Fondamenti di Informatica 8

CommentiSTART: MOV AX, BX ; Carico AX con il valore di BX

CMP AX, 24 ; Confronto AX con 24 JZ EQUAL ; Se AX=24 salto a EQUAL INT 21h ; Chiama l'INT 24h RET ; Ritorna alla proc. Chiamante

EQUAL: ...

START: MOV AX, BX ; Carico AX con il numero di riga CMP AX, 24 ; Se sono al termine dello schermo JZ EQUAL ; allora non scrivo nulla INT 21h ; Scrivi la prossima riga di testo RET ; Ritorna

EQUAL: ...

Page 9: Linguaggi

Fondamenti di Informatica 9

Tipi di istruzioni (Intel x86)

• Trasferimento dati• Aritmetiche e logiche• Manipolazione di bit• Manipolazione di stringhe• Trasferimento di controllo• Manipolazione di interruzioni• Controllo del processore

Page 10: Linguaggi

Fondamenti di Informatica 10

Trasferimento dati

• Servono per trasferire dati tra:– registri– memoria– unità esterne

• MOV AX, BX - MOV AX, [indirizzo]

• PUSH AX - POP BX

Page 11: Linguaggi

Fondamenti di Informatica 11

Aritmetiche

• Somme, sottrazioni, confronti, (moltiplicazioni, divisioni)

• Side effect sui flag• ADD AX, BX• ADC AX, BX• MUL BX (macchine "a 0, 1, 2

indirizzi")

• CMP AX, BX

Page 12: Linguaggi

Fondamenti di Informatica 12

Logiche

• And, Or, Xor, Not, Test

• AND AX, BX• OR AX, BX• TEST AX, 01100100b

Page 13: Linguaggi

Fondamenti di Informatica 13

Manipolazione di bit

• Traslazioni e Rotazioni delle configurazioni binarie

• Traslazioni: SHL, SHR• Traslazioni aritmetiche: SAL, SAR• Rotazioni: ROL, ROR• Rotazioni con carry: RCL, RCR

Page 14: Linguaggi

Fondamenti di Informatica 14

Manipolazione di stringhe

• Spostamento, confronto, ricerca,…• Utilizzano due registri puntatori e

un registro contatore

• MOVS [ethchetta], [etichetta]• CMPS [ethchetta], [etichetta]• SCAS [ethchetta], [etichetta]

Page 15: Linguaggi

Fondamenti di Informatica 15

Trasferimento del controllo

• Salti condizionati, incondizionati, chiamate e ritorni da procedure

• JZ [etichetta], JC [etichetta], … – diverse combinazioni

• JMP [etichetta]• CALL [procedura]• RET

Page 16: Linguaggi

Fondamenti di Informatica 16

Manipolazione delle interruzioni

• Concetto di Interrupt• Interrupt hardware e software• La Interrupt Service Routine (ISR) è

paragonabile ad una procedura ma:– è attivabile via hardware– non specifica l'indirizzo della procedura,

che è quindi modificabile– durante l'esecuzione disabilita le

interruzioni

Page 17: Linguaggi

Fondamenti di Informatica 17

Controllo del processore

• Servono a modificare il comportamento della CPU

• Modificano i flag di controllo: CLC, STC, CMC (agiscono sul flag C), …

• Sincronizzazione: NOP, HLT, ESC, LOCK, …

Page 18: Linguaggi

Fondamenti di Informatica 18

Accesso alla memoria

• Il metodo di indirizzamento definisce il meccanismo per ottenere i dati:

– in registri– nell'istruzione stessa– in memoria– su una porta di I/O

Page 19: Linguaggi

Fondamenti di Informatica 19

Modi di indirizzamento

• Immediato:– l'operando copare direttamente

nell'istruzione come costante– è utilizzato solo per operandi

'sorgente'

– MOV AX, 2

Page 20: Linguaggi

Fondamenti di Informatica 20

Modi di indirizzamento

• Assoluto:– Nell'istruzione compare l'indirizzo

effettivo (fisico) di memoria dove si trova l'operando

– MOV AX, [3923:2314]

Page 21: Linguaggi

Fondamenti di Informatica 21

Modi di indirizzamento

• Relativo:– l'indirizzo di memoria è specificato

relativamente al contenuto del PC– vantaggio per programmi rilocabili

– MOV AX, [PC+102]

Page 22: Linguaggi

Fondamenti di Informatica 22

Modi di indirizzamento

• Diretto:– l'operando è contenuto in un registro– nell'istruzione è specificato

l'identificativo del registro

– MOV AX, BX

Page 23: Linguaggi

Fondamenti di Informatica 23

Modi di indirizzamento

• Indiretto con registro:– l'operando è in una cella di memoria il

cui indirizzo è contenuto in un registro

– nell'istruzione è specificato l'identificativo del registro

– MOV AX, [BX]

Page 24: Linguaggi

Fondamenti di Informatica 24

Modi di indirizzamento

• Con autodecremento/incremento:– analogo all'indiretto con registro, ma il

contenuto del registro viene decrementato di una quantità pari alla dimensione in bytes dell'operando

– predecremento e postdecremento– preincremento e postincremento

Page 25: Linguaggi

Fondamenti di Informatica 25

Modi di indirizzamento

• Indiretto con autoincremento:– l'operando è in memoria; il suo indirizzo è in

un'altra posizione della memoria puntata dal contenuto di un registro.

– nell'istruzione è contenuto l'identificativo del registro

– dopo l'uso, il contenuto del registro è incrementato di una quantità pari alla dimensione in bytes di un indirizzo di memoria

Page 26: Linguaggi

Fondamenti di Informatica 26

Modi di indirizzamento

• Con spiazzamento:– nell'istruzione sono specificati un dato

in complemento a 2 e l'identificatore di un registro

– il dato viene sommato al contenuto del registro per ottenere l'indirizzo dell'operando

– MOV AX, [BX+9382]

Page 27: Linguaggi

Fondamenti di Informatica 27

Modi di indirizzamento

• Indiretto con spiazzamento:– come il precedente, ma l'indirizzo

ottenuto della somma punta ad una posizione di memoria dove è contenuto l'indirizzo dell'operando

Page 28: Linguaggi

Fondamenti di Informatica 28

Modi di indirizzamento

• Con registri indice:– utilizza due registri: uno contiene un

indirizzo base e l'altro un numero da moltiplicare per la dimensione dell'operando e da sommare alla base per ottenere la locazione dell'operando.

– Utile per l'accesso a vettori

Page 29: Linguaggi

Fondamenti di Informatica 29

Modi di indirizzamento

• Con lo stack pointer:– SP punta alla sommità dello stack; – le istruzioni PUSH e POP permettono

di inserire e prelevare elementi dallo stack

– Passaggio di parametri

Page 30: Linguaggi

Fondamenti di Informatica 30

Modi di indirizzamento

• Implicito:– alcune istruzioni non prevedono di

specificare esplicitamente alcuni dei loro operandi

– DIV BL– Macchine "a 0 e 1 indirizzi"

Page 31: Linguaggi

Fondamenti di Informatica 31

Descrizione istruzioni

• Il costruttore fornisce delle tabelle che descrivono l'esatto comportamento delle istruzioni– operazione effettuata– side effects– tempo di esecuzione– codifica

Page 32: Linguaggi

Fondamenti di Informatica 32

Codifica delle istruzioni

• Problema:– rappresentare l'instruction set con

opportune stringhe di bit– particolare riguardo anche alle

prestazioni

• Soluzione:– codifiche con lunghezza variabile– codifica di Huffman

Page 33: Linguaggi

Fondamenti di Informatica 33

Il BIOS

• Il BIOS (Basic Input Output System) è uno strato di software utilizzato per standardizzare l'accesso ai periferici

• Fornisce un insieme di procedure standard di interfaccia

• Permette la gestione a basso livello di:– video, tastiera, mouse, stampante,…

Page 34: Linguaggi

Fondamenti di Informatica 34

Visione stratificata

Hardware

BIOS

Sistema Operativo

Applicazioni Assembly

Livelli superiori