stiamo tranquilli…

Costruire un computer da zero – Linguaggio macchina e assembly

0 commenti

A cura di @Johnny Banana.

In questa lezione ci prendiamo una pausa dalla costruzione del nostro hardware, e studiamo invece le istruzioni per farlo funzionare.

Ogni processore funziona eseguendo ininterrottamente una sequenza di operazioni elementari, codificate nell’unico modo che un computer sa interpretare, ovvero come parole composte di zeri e uni.

Possiamo vedere il linguaggio macchina come il vocabolario del computer: l’insieme delle parole dotate di un significato (ovvero che corrispondono ad una operazione elementare). Esempi di operazioni elementari sono lo spostare un valore da un registro ad un altro, sommare due registri, decidere da quale registro leggere l’operazione successiva, eccetera.

Il linguaggio macchina non è uguale per tutti i processori, e quello presentato in questa lezione si applica soltanto al nostro computer (Hack), ma i concetti fondamentali sono trasferibili a tutte le altre architetture.

 

Una volta imparato il linguaggio, si pone il problema di usarlo per dare istruzioni al processore. A differenza dei computer, gli umani non brillano per capacità di ricordare lunghe sequenze di numeri: è qui che entra in scena il linguaggio assembly, che facilita la scrittura di codice macchina grazie all’uso di sigle mnemoniche al posto delle anonime sequenze binarie.

Non bisogna però pensare che una volta rese più comprensibili le istruzioni la strada sia tutta in discesa. Anche per chi è abituato a programmare, questo tipo di codice può rivelarsi ostico a causa del suo minimalismo (più precisamente, a causa della sua mancanza di astrazione).

Scordatevi variabili, cicli e funzioni: tutto ciò che avete a disposizione sono tre registri in cui caricare dati dalla memoria, istruzioni di salto e interi a 16 bit. Buona fortuna!

 

Il modulo 4 descrive nel dettaglio le specifiche del linguaggio macchina del nostro computer, e fa una panoramica su come si programma nel relativo linguaggio assembly.

Gli esercizi consistono nello scrivere due programmi. Il primo richiede di calcolare un semplice prodotto tra due numeri interi (ma sarà semplice davvero?)

Il secondo programma richiede di manipolare le aree della memoria destinate all’input e output, e una volta completato permetterà di gestire il colore dello sfondo dello schermo premendo o rilasciando un tasto qualsiasi. La gamma di colori è un po’ povera (bianco o nero), ma la soddisfazione è assicurata!

 

Ricordiamo che è possibile seguire il corso gratuitamente su Coursera, oppure tramite una playlist su YouTube. Ulteriori approfondimenti sono disponibili sul sito ufficiale del progetto, nand2tetris.org


Commenta qui sotto e segui le linee guida del sito.