Non affrettatevi subito a chiedere “perché?” Creare una CPU usando solo un foglio di calcolo Excel è davvero una sfida insolita. Un’avventura nel mondo dell’informatica che aiuta a capire come funziona un processore più da vicino. Se poi quello che un eccentrico programmatore ha realizzato, con tanto impegno, non ha valenza pratica, beh, pazienza. Mettere in pratica quella pazza idea al limite dell’impossibile è di per sé apprezzabile. E ha peraltro una certa valenza didattica.
Creare una CPU a 16 bit a 3 Hz (!) è possibile con Microsoft Excel
Nel repository GitHub del progetto Excel 16-Bit CPU è possibile trovare una serie di file. Il documento CPU.xlsx
è il foglio elettronico principale che simula una CPU a 16 bit dotata di 16 registri generali, 128 KB di RAM e un display virtuale da 128 x 128 pixel. L’intero sistema è sostenuto da un segnale di clock che può essere facilmente reimpostato (basta premere il tasto F9
).
L’autore spiega di aver creato anche un linguaggio di programmazione “ad hoc”, battezzandolo Excel-ASM16. Formato da 24 istruzioni, tra cui LOAD, STORE, JUMP e istruzioni algebriche, il linguaggio permette agli utenti di scrivere programmi direttamente in Excel. È ad esempio possibile eseguire somme, sottrazioni, moltiplicazioni e divisioni utilizzando istruzioni come `ADD`, `SUB`, `MULT` e `DIV`.
In termini di controllo di flusso del programma, il simulatore offre la possibilità di operare in modalità automatica o manuale. Il tutto senza mai ricorrere a script Visual Basic all’interno di Excel e basandosi esclusivamente sull’uso di normali formule.
Ovviamente Excel non è la piattaforma adatta per supportare un progetto del genere e sostenere le elaborazioni con un approccio che guarda alle prestazioni. Tant’è vero che la velocità di clock del processore virtuale si ferma ad appena 3 Hz. Nonostante le performance assolutamente mediocri, per usare un eufemismo, il progetto Excel consente di verificare il funzionamento interno della CPU mentre svolge il suo lavoro.
Provare la CPU Excel a 16 bit: come compilare il progetto
Il linguaggio Excel-ASM16 permette di scrivere programmi direttamente nel foglio di calcolo o di importarli da file binari. Dopo aver scritto il programma, il passo successivo è la compilazione.
Uno script Python, compileExcelASM16.py
, si occupa di trasformare il codice sorgente in istruzioni eseguibili dalla CPU. Il comando di compilazione suggerito è il seguente:
py compileExcelASM16.py program.s ROM.xlsx
Al posto di program.s
è richiesto di specificare il programma da eseguire: nella sottocartella “sample programs” si possono trovare alcuni esempi da utilizzare subito. La ROM (Read-Only Memory) della CPU virtuale, conservata nel file ROM.xlsx
, rappresenta il contenuto della memoria non volatile utilizzata per immagazzinare dati che devono essere conservati anche quando il sistema è spento o quando viene interrotta l’alimentazione.
Lo sviluppatore che ha creato il bizzarro progetto in Excel avverte di non premere freneticamente il tasto F9
. Excel richiede tempo per aggiornare un gran numero di celle: è necessario attendere che la scritta “Pronto” compaia nell’angolo in basso a sinistra.
Questo video YouTube contiene una trattazione dettagliata del lavoro svolto per simulare la CPU a 16 bit in Excel.
Credit immagine in apertura: iStock.com – jonnysek