Programmazione... su Minecraft? pt. 3
- Francesco Scolz
- 28 feb
- Tempo di lettura: 3 min

Buongiorno così!
Nuovo post, nuova avventura, sempre nell'ambito redstone di Minecraft, il "giochetto a cubi"
Se vi siete persi le scorse parti vi consiglio vivamente di andarvele a ripescare, dato che parte tutto da lì (pt.1 e pt.2)
E dato che oggi andremmo a spingere sull'acceleratore...
Dunque, ci siamo lasciati definendo le diverse parti del nostro computer
Anche se abbiamo tralasciato molte delle parti accessorie, possiamo lavorare con quello che abbiamo ora:
Un registro di file, REG
Un componente addebito alle operazioni, ALU (per ora addizione e sottrazione)
Il registro? Beh, non è così difficile, basterebbe fare in modo che ci si possa scrivere sopra, e poi leggerlo
Lo faremo a 16 sottoregistri, dove ognuno immagazzina numeri binari 8-bit (da 0 a 255)
Ogni sottoregistro quindi avrà l'opzione di essere sovrascritto e di essere letto
Ecco un esempio artigianale:

Tutti quei filamenti di redstone, solo per creare un registro!
Ok, ma ora? Come fai il calcolatore?
Chiaramente, questo è molto più complicato e logico rispetto a dei "semplici" registri
E come si fa quindi?
Prima di tutto decidiamo le operazioni che svolgerà (addizione e sottrazione)
Poi andremo a creare due "operatori" separati: uno che aggiungerà i due input, l'altro che li sottrarrà
(Li chiameremo ADDER e SUBTRACTER)
Questi due componenti verranno poi fusi insieme, ed in base a ciò che ci serve ogni volta, decideremo se far passare gli input nell'ADDER o nel SUBTRACTER
Registriamo l'ouput e lo mandiamo di nuovo al registro
Semplice no?

Ok, forse no...
(Ricordiamo che nella realtà tutti questi componenti sono di dimensioni ridottissime. Minecraft non è progettato per questo, e quindi lo spazio di costruzione necessario è paragonabile a quello di Piazza duomo)
Fatti questi due componenti, li uniamo per creare quello che sarà il cuore del nostro computer (viene generalmente chiamato datapath)
Bene, e ora?
Ora lo possiamo già testare: mettiamo di voler leggere registro 1 e registro 2, per poi scrivere il risultato in registro 3
Reg1 = 1
Reg2 = 2
Reg3 = 0
"Leggiamo" i due registri, mandiamo i valori all'ALU in modalità addizione, aspettiamo l'output e lo scriviamo in registro 3
Reg1 = 1
Reg2 = 2
Reg3 = 3
Ok, e ora? Computer finito?
Certo che NO
Questo è solo il cuore del computer, e per ora dobbiamo dargli i comandi manualmente, uno per uno
Per continuare avremmo bisogno di una cosa chiamata program register, che immagazzinerà le linee di "codice" della nostra macchina
(Una memoria di tipo ROM, per i più tecnici)
Codice? Intendi quello per programmare?
Esatto, ma non quello relativamente facile da comprendere che vediamo in Python, Java e C++
Bensì un "machine code", fatto appunto, da tanti 0 e 1 concatenati (binario)
E come fa la macchina a sapere cosa fare?!
Lo scopriremo la prossima volta!
Se doveste creare una CPU su Minecraft come la fareste? Piccola e lenta, o veloce e grande?
Per me è sia grande sia lenta, quindi non tanto bene...
Considerate che gira a 0.05Hz, ovvero un operazione ogni 20 secondi
Chiaramente riducibile con ottimizzazioni, ma per ora mi basta crearne una funzionante onestamente, poi mi preoccuperò del resto
E voi? Come strutturereste la vostra CPU?
Io vi lascio con questa domanda, e come al solito...
Al prossimo post
Dope site 9/10, don't forget to play some cr with fatnin tho