Cos'è l'assembly?

Cos'è l'assembly?

Glen Beck e Betty Snyder mentre azionano l'ENIAC al Ballistic Research Laboratory.
Glen Beck e Betty Snyder mentre azionano l'ENIAC al Ballistic Research Laboratory.

L'ENIAC fu il primo computer elettronico general-purpose. Fu costruito presso l'Università della Pennsylvania e completato nel 1945. Snyder fu una delle sei donne che lo programmarono a mano.

Prima di macchine come l'ENIAC, la parola computer indicava una persona che eseguiva calcoli a mano, e le sei donne che programmarono l'ENIAC erano state assunte per quel lavoro. Per programmare la macchina, la ricablavano: collegavano cavi e impostavano interruttori ogni volta che il problema cambiava. Quel ricablaggio è la ragione storica per cui esiste il linguaggio assembly. Nel giro di pochi anni, gli ingegneri in Europa e in America iniziarono a sostituire fili e impostazioni degli interruttori con brevi codici scritti che rappresentavano istruzioni, così che una persona potesse leggere e modificare un programma senza toccare un connettore.

Innanzitutto, una CPU (unità centrale di elaborazione) è il chip al centro del tuo computer, e svolge un solo compito: esegue una lunga lista di piccoli comandi chiamati istruzioni, uno dopo l'altro, miliardi al secondo. Ogni istruzione è semplice di per sé, come sommare due numeri, spostare un valore o saltare in un altro punto.

L'assembly è la forma delle istruzioni che una CPU esegue che una persona può leggere. Ogni riga è (quasi) una singola istruzione macchina. Non hai cicli, oggetti o stringhe. Sposti numeri tra registri, piccoli slot di memoria all'interno del processore, e la memoria.

Maurice Wilkes mentre esamina una parte dell'EDSAC presso l'Università di Cambridge.
Maurice Wilkes mentre esamina una parte dell'EDSAC presso l'Università di Cambridge.

L'EDSAC eseguiva gli Initial Orders di David Wheeler, uno dei primi programmi che traducevano istruzioni scritte in codice macchina.

Ogni processore ha bisogno di un programma che legga istruzioni scritte e produca i bit grezzi che l'hardware esegue: un assembler. L'assembler in questa pagina è rivolto a un solo set di istruzioni.

Questo simulatore usa RISC-V, un set di istruzioni moderno usato in chip reali e insegnato nelle università. Ciò che impari qui si applica direttamente all'hardware.

Yunsup Lee mentre tiene in mano un primo prototipo di chip RISC-V nel 2013.
Yunsup Lee mentre tiene in mano un primo prototipo di chip RISC-V nel 2013.

RISC-V è un'architettura di set di istruzioni aperta. Chiunque può implementare la sua specifica pubblicata nell'hardware, e non è richiesto alcun costo né permesso.

Qualsiasi progetto di set di istruzioni deve decidere quanto lavoro svolge una singola istruzione. I chip CISC (Complex Instruction Set Computer), inclusa l'architettura x86 presente nella maggior parte dei computer desktop e portatili, mettono una grande quantità di lavoro in ogni istruzione. Una singola istruzione potrebbe leggere un valore dalla memoria, eseguirvi operazioni aritmetiche e riscrivere il risultato, tutto in un unico passo. RISC-V segue il progetto sostenuto da Patterson & Ditzel, 1980: ogni istruzione esegue una singola operazione semplice, e qualsiasi comportamento complesso è prodotto combinando molte di queste istruzioni.

RISC sta per Reduced Instruction Set Computer. L'hardware è costruito per eseguire un piccolo gruppo di istruzioni semplici ad alta velocità. Il comportamento complesso è prodotto combinando questi passi semplici e veloci.

L'assembler di Kathleen Booth per l'ARC (Booth, 1947) e gli Initial Orders di David Wheeler per l'EDSAC (Wilkes, Wheeler & Gill, 1951) figurano tra i primi assembler funzionanti, e gli storici continuano a dibattere quale sia venuto prima. RISC-V, il set di istruzioni che questo simulatore esegue, definisce una piccola lista aperta di istruzioni che chiunque può implementare (Asanović & Patterson, 2014). Ogni lezione da questo punto in poi insegna direttamente quel set di istruzioni.