• Non ci sono risultati.

Linguaggio Macchina •Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il •Diversi tipi di linguaggi: Linguaggi

N/A
N/A
Protected

Academic year: 2021

Condividi "Linguaggio Macchina •Tutti basati sulla traduzione nell'unico linguaggio eseguibile dal calcolatore: il •Diversi tipi di linguaggi: Linguaggi"

Copied!
34
0
0

Testo completo

(1)

Linguaggi

• Diversi tipi di linguaggi:

– Imperativi – Funzionali – Dichiarativi

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

il Linguaggio Macchina

(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

(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

(4)

Linguaggio Macchina

• Il Linguaggio Macchina è estremamente efficiente

• I programmi sono:

– più veloci – più corti

– ma più complessi

(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

(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, BX CMP AX, 12h JZ EQUAL INT 21h RET

EQUAL: MOV BL, 82h

(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

(8)

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: ...

(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

(10)

Trasferimento dati

• Servono per trasferire dati tra:

– registri – memoria

– unità esterne

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

• PUSH AX - POP BX

(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

(12)

Logiche

• And, Or, Xor, Not, Test

• AND AX, BX

• OR AX, BX

• TEST AX, 01100100b

(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

(14)

Manipolazione di stringhe

• Spostamento, confronto, ricerca,…

• Utilizzano due registri puntatori e un registro contatore

• MOVS [ethchetta], [etichetta]

• CMPS [ethchetta], [etichetta]

• SCAS [ethchetta], [etichetta]

(15)

Trasferimento del controllo

• Salti condizionati, incondizionati, chiamate e ritorni da procedure

• JZ [etichetta], JC [etichetta], …

– diverse combinazioni

• JMP [etichetta]

• CALL [procedura]

• RET

(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

(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,

(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

(19)

Modi di indirizzamento

• Immediato:

– l'operando copare direttamente nell'istruzione come costante

– è utilizzato solo per operandi 'sorgente' – MOV AX, 2

(20)

Modi di indirizzamento

• Assoluto:

– Nell'istruzione compare l'indirizzo effettivo (fisico) di memoria dove si trova l'operando – MOV AX, [3923:2314]

(21)

Modi di indirizzamento

• Relativo:

– l'indirizzo di memoria è specificato relativamente al contenuto del PC – vantaggio per programmi rilocabili – MOV AX, [PC+102]

(22)

Modi di indirizzamento

• Diretto:

– l'operando è contenuto in un registro

– nell'istruzione è specificato l'identificativo del registro

– MOV AX, BX

(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]

(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

(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

(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]

(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

(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

(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

(30)

Modi di indirizzamento

• Implicito:

– alcune istruzioni non prevedono di

specificare esplicitamente alcuni dei loro operandi

– DIV BL

– Macchine "a 0 e 1 indirizzi"

(31)

Descrizione istruzioni

• Il costruttore fornisce delle tabelle che descrivono l'esatto comportamento

delle istruzioni

– operazione effettuata – side effects

– tempo di esecuzione – codifica

(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

(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,…

(34)

Visione stratificata

Hardware BIOS

Sistema Operativo

Applicazioni Assembly Livelli superiori

Riferimenti

Documenti correlati

• Linguaggi di alto livello: linguisticamente più vicini al linguaggio naturale (1 istruzione equivale a 2+, o anche 10+, istruzioni in linguaggio macchina).. • Linguaggi

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una

Traduttore: genera il programma oggetto mediante la traduzione del programma sorgente da linguaggio simbolico a linguaggio macchina. compilatore: la traduzione è effettuata una

L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione.. Essa è fornita per scopi meramente didattici e non per essere utilizzata in

Linguaggio macchina Le operazioni disponibili sono quelle direttamente fornite dall'hardware; ogni operazione è codificata da una sequenza di bit; ogni dato è indicato

• Richiede tuttavia di un processo di traduzione da Assembly a linguaggio macchina, ma a differenza dei linguaggi ad alto livello la corrispondenza è 1:1 (ad ogni istruzione

[r]