Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Il Linguaggio Macchina
l Un processore, durante il suo funzionamento, esegue senza sosta le fasi di fetch, operand assembly ed execute. La fase di fetch consiste nel prelevare dalla memoria l istruzione correntemente indirizzata dal registro Program Counter (PC). Quest ultima, rappresentata concretamente da una sequenza di bit, un istruzione del linguaggio macchina. In seguito alla operazione di fetch, l istruzione che deve essere eseguita viene ricopiata nel registro IR. L unit di controllo ha quindi il compito di riconoscerla ed avviare la corrispondente serie di azioni che conduce all esecuzione della particolare istruzione.
Il Linguaggio Macchina
l Tali azioni sono dette micro-operazioni e possono concretizzarsi, ad esempio, in:
abilitazione di un registro alla scrittura sul bus interno; abilitazione di un registro alla lettura dal bus interno; abilitazione della memoria alla scrittura nel registro MDR; invocazione di una funzionalit dell ALU.
l Una diversa serie di micro-operazioni abbinata all esecuzione di ciascuna istruzione. l Il programmatore non ha accesso alle micro-operazioni ma, dal suo punto di vista, un istruzione in linguaggio macchina vista come atomica.
Il Linguaggio Macchina
l Un insieme di istruzioni in linguaggio macchina
strettamente dipendente dal particolare processore e varia da processore a processore; ha cardinalit finita; completamente definito nella fase di progetto del processore; non pu essere esteso in seguito.
l Esso indicativo di cosa il processore sa fare . l La opportuna composizione di una serie di istruzioni in linguaggio macchina finalizzate alla realizzazione di una elaborazione, insieme con i dati su cui le istruzioni operano, costituisce un programma.
TERMINOLOGIA
l Assembly (definizione tratta dal sito di Wikipedia): il linguaggio di programmazione pi vicino al linguaggio macchina vero e proprio. Infatti, esiste una corrispondenza pressoch biunivoca tra gli mnemonici del linguaggio assembly ed i corrispondenti codici macchina corrispondenti ai bitfields (campi di bit) che compongono le istruzioni direttamente eseguibili dal dispositivo elettronico (in genere una CPU) che si sta programmando. l Assembler (definizione tratta dal sito di Wikipedia): un programma compilatore che si occupa di tradurre in linguaggio macchina (ossia una serie di bit 0 e 1 che costituiscono l'unico modo per comunicare con dispositivi elettronici), una serie di comandi scritti in linguaggio Assembly. Oltre a questo compito base, un Assembler si occupa spesso di ausiliare il programmatore, ad esempio consentendo l'utilizzo nel codice sorgente del programma di nomi mnemonici al posto di indirizzi esadecimali che costituiscono l'esatta collocazione di una variabile o di una porzione di programma nella memoria centrale del computer.
l Linguaggi Assembly:
Una istruzione una stringa alfanumerica che corrisponde ad una istruzione di linguaggio macchina (1:1). Esempio di istruzione: ADD AX, BX
l Motivazioni
Possibilit di utilizzare al meglio la macchina hardware Elevato controllo sulla struttura dei programmi
l Nota: l assembly non un linguaggio portabile, essendo strettamente legato all architettura sulla quale opera.
l Svantaggi:
Programmi difficili da scrivere e leggere Error-Prone Impossibile scrivere grandi programmi Minore portabilit
l Usi Attuali:
Piccoli moduli altamente efficienti (i.e. sistemi operativi) Sistemi real-time, embedded
ESECUZIONE
RAM
LOADER
l Integrato: all interno di un programma scritto in un linguaggio ad alto livello si inseriscono blocchi di istruzioni Assembly
C. C++ Borland Turbo Pascal, Delphi
una finzione.
L emulatore EMU8086
l Durante queste lezioni prenderemo in considerazione un emulatore di CPU i80x86: emu8086, reperibile presso http://www.emu8086.com/.
l L universit di Bari ha acquistato una Site License che permette agli studenti di installare il software sul proprio pc. Per poter usufruire della licenza, lo studente deve: l Compilare una dichiarazione l Consegnare tale dichiarazione accompagnata dalla fotocopia di un documento di identit.
l L'emulatore permette di analizzare le componenti salienti della CPU in modalit real-time: durante l'esecuzione delle istruzioni sono infatti visibili immediatamente le modifiche ai registri e ai flag; l Permette di eseguire il nostro codice su un qualunque calcolatore in grado di eseguire l'emulatore; l Non necessario compilare il programma ad ogni minima modifica al codice.
Un semplice programma creato usando il template-exe disponibile. Faremo riferimento a questo tipo di file.
10