top of page

Programmazione... su Minecraft? pt. 3


ree













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:


ree

















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?


ree
















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

 
 
 

1 commento


Dope site 9/10, don't forget to play some cr with fatnin tho

Mi piace
bottom of page