SOFTWARE

1. ASSEMBLY

1.0 Premessa

Le cose che ho scritto di seguito sono scritte molto meglio nel materiale del corso "Laboratorio di Architetture I", disponibile sul sito Twiki.

1.1 Il Liguaggio

L'assembly è IL linguaggio di programmazione a basso livello (più vicino alla macchina).
Viene "costruito" sull'architettura della macchina e per questo ne sfrutta tutte le caratteristiche.
In questo corso, ogni volta che si parla di "programmatore" si intende "programmatore assembly", ovvero che scrive in assembly i programmi.

È composto da:

1.2 Il Funzionamento

Quando un file o modulo sorgente scritto in assembly viene tradotto in modulo oggetto, l'assemblatore trasforma il codice mnemonico in stringhe binarie e risolve soltanto gli indirizzi interni al modulo.
Il modulo oggetto sarebbe già perfettamente eseguibile se non ci fossero collegamenti irrisolti ad altri moduli oggetto.

Un programma di nome linker si occupa di fondere in modo corretto i moduli oggetto che servono. I moduli oggetto fusi, possono derivare anche da altri linguaggi di programmazione, oltre all'assembly. Viene creato così il modulo eseguibile.

In particolare, nei moduli oggetto: gli indirizzi assoluti vengono fatti partire da zero; i salti a funzioni esterne e i riferimenti a variabili o funzioni esterne non sono risolti; i riferimenti a variabili o etichette globali non sono risolti.

1.3 L'importanza delle interruzioni software

Se non esistessero, per far funzionare più programmi contemporaneamente bisognerebbe linkarli. Le istruzioni di trap, infondo, eseguono una specie di link tramite gli indirizzi assoluti del vettore delle interruzioni: la stessa cosa che fa il linker quando cambia gli indirizzi assoluti dei moduli che unisce.

Se non esistessero, più programmi che usano una stessa libreria dovrebbero essere linkati ogniuno alla sua copia della libreria. Tramite trap, invece, viene caricata una sola copia della librearia a cui i vari programmi accedono a turni.

Se non esistessero, non si potrebbe avere la struttura di sistema operativo che si ha attualmente: un nucleo gestisce il colloquio tra applicazioni e periferiche interne ed esterne. Questi colloqui, infatti, nel caso nucleo-applicazioni vengono gestiti tramite trap.

2. Software di base

Il software che deve essere fornito dal produttore della macchina.
Senza questi programmi, la macchina sarebbe inutilizzabile. Per avere una macchina efficiente, sarebbe opportuno scrivere almeno il software di base in assembly.