340 likes | 582 Views
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:
E N D
Linguaggi • Diversi tipi di linguaggi: • Imperativi • Funzionali • Dichiarativi • Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il Linguaggio Macchina Fondamenti di Informatica
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
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
Linguaggio Macchina • Il Linguaggio Macchina è estremamente efficiente • I programmi sono: • più veloci • più corti • ma più complessi Fondamenti di Informatica
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
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 CMP AX, 12h JZ EQUAL INT 21h RET EQUAL: MOV BL, 82h Fondamenti di Informatica
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
Commenti START: 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
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
Trasferimento dati • Servono per trasferire dati tra: • registri • memoria • unità esterne • MOV AX, BX - MOV AX, [indirizzo] • PUSH AX - POP BX Fondamenti di Informatica
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
Logiche • And, Or, Xor, Not, Test • AND AX, BX • OR AX, BX • TEST AX, 01100100b Fondamenti di Informatica
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
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
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
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
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
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
Modi di indirizzamento • Immediato: • l'operando copare direttamente nell'istruzione come costante • è utilizzato solo per operandi 'sorgente' • MOV AX, 2 Fondamenti di Informatica
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
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
Modi di indirizzamento • Diretto: • l'operando è contenuto in un registro • nell'istruzione è specificato l'identificativo del registro • MOV AX, BX Fondamenti di Informatica
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
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
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
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
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
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
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
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
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
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
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
Visione stratificata Livelli superiori Applicazioni Assembly Sistema Operativo BIOS Hardware Fondamenti di Informatica