Linguaggi
description
Transcript of 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
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
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
Fondamenti di Informatica 4
Linguaggio Macchina
• Il Linguaggio Macchina è estremamente efficiente
• I programmi sono:– più veloci– più corti– ma più complessi
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
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
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
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: ...
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
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
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
Fondamenti di Informatica 12
Logiche
• And, Or, Xor, Not, Test
• AND AX, BX• OR AX, BX• TEST AX, 01100100b
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
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]
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
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
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, …
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
Fondamenti di Informatica 19
Modi di indirizzamento
• Immediato:– l'operando copare direttamente
nell'istruzione come costante– è utilizzato solo per operandi
'sorgente'
– MOV AX, 2
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]
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]
Fondamenti di Informatica 22
Modi di indirizzamento
• Diretto:– l'operando è contenuto in un registro– nell'istruzione è specificato
l'identificativo del registro
– MOV AX, BX
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]
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
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
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]
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
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
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
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"
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
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
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,…
Fondamenti di Informatica 34
Visione stratificata
Hardware
BIOS
Sistema Operativo
Applicazioni Assembly
Livelli superiori