Cos'è l'assembly?

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.

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.

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.
Riferimenti
- [1]IEEE Computer Society. Women of ENIAC.
- [2]Booth, K. General Considerations in the Design of an All Purpose Electronic Digital Computer. 1947.
- [3]Wilkes, M. V., Wheeler, D. J., Gill, S. The Preparation of Programs for an Electronic Digital Computer. Addison-Wesley, 1951.
- [4]Patterson, D. A., Ditzel, D. R. The Case for the Reduced Instruction Set Computer. ACM SIGARCH Computer Architecture News, 1980.
- [5]Asanović, K., Patterson, D. A. Instruction Sets Should Be Free: The Case For RISC-V. UCB/EECS-2014-146, 2014.
- [6]Glen Beck and Betty Snyder program the ENIAC, building 328, Ballistic Research Laboratory. U.S. Army photo, public domain.
- [7]Maurice Wilkes examining a mercury delay line during the construction of EDSAC. Computer Laboratory, University of Cambridge, CC BY 2.0.
- [8]Yunsup Lee holding a RISC-V prototype chip, 2013. CC0.
