Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina
Fondamenti di Informatica2 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 Informatica3 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 Informatica4 Linguaggio Macchina Il Linguaggio Macchina è estremamente efficiente I programmi sono: –più veloci –più corti –ma più complessi
Fondamenti di Informatica5 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 Informatica6 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, BX CMPAX, 12h JZEQUAL INT21h RET EQUAL:MOVBL, 82h
Fondamenti di Informatica7 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 Informatica8 Commenti START: MOVAX, BX ; Carico AX con il valore di BX CMPAX, 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: MOVAX, BX ; Carico AX con il numero di riga CMPAX, 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 Informatica9 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 Informatica10 Trasferimento dati Servono per trasferire dati tra: –registri –memoria –unità esterne MOV AX, BX - MOV AX, [indirizzo] PUSH AX - POP BX
Fondamenti di Informatica11 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 Informatica12 Logiche And, Or, Xor, Not, Test AND AX, BX OR AX, BX TEST AX, b
Fondamenti di Informatica13 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 Informatica14 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 Informatica15 Trasferimento del controllo Salti condizionati, incondizionati, chiamate e ritorni da procedure JZ [etichetta], JC [etichetta], … –diverse combinazioni JMP [etichetta] CALL [procedura] RET
Fondamenti di Informatica16 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 Informatica17 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 Informatica18 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 Informatica19 Modi di indirizzamento Immediato: –l'operando copare direttamente nell'istruzione come costante –è utilizzato solo per operandi 'sorgente' –MOV AX, 2
Fondamenti di Informatica20 Modi di indirizzamento Assoluto: –Nell'istruzione compare l'indirizzo effettivo (fisico) di memoria dove si trova l'operando –MOV AX, [3923:2314]
Fondamenti di Informatica21 Modi di indirizzamento Relativo: –l'indirizzo di memoria è specificato relativamente al contenuto del PC –vantaggio per programmi rilocabili –MOV AX, [PC+102]
Fondamenti di Informatica22 Modi di indirizzamento Diretto: –l'operando è contenuto in un registro –nell'istruzione è specificato l'identificativo del registro –MOV AX, BX
Fondamenti di Informatica23 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 Informatica24 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 Informatica25 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 Informatica26 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 Informatica27 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 Informatica28 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 Informatica29 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 Informatica30 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 Informatica31 Descrizione istruzioni Il costruttore fornisce delle tabelle che descrivono l'esatto comportamento delle istruzioni –operazione effettuata –side effects –tempo di esecuzione –codifica
Fondamenti di Informatica32 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 Informatica33 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 Informatica34 Visione stratificata Hardware BIOS Sistema Operativo Applicazioni Assembly Livelli superiori