Creata una CPU a 16 bit funzionante dentro Microsoft Excel

Una CPU a 16 bit completamente funzionante è stata riprodotta in Excel da uno youtuber che ha illustrato il tutto in un video. Capace di lavorare a 3 Hz, il processore include 128 KB di RAM, un display a 16 colori ed è accompagnato da un linguaggio assembly custom.
di Manolo De Agostini pubblicata il 30 Gennaio 2024, alle 10:01 nel canale ProcessoriMicrosoftExcel
21 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infothe e pasticcini per tutti?
Ho però trovato non molte magagne in Excel, la più clamorosa sono gli indici delle colonne dei fogli di calcolo che sono normalmente rappresentate con le lettere dell'alfabeto ma che sotto il cofano vengono tradotti negli indici numerici 1,2,3,4 ... (la colonna A ha indice 1 e non zero).
La codifica tra le etichette e gli indici numerici è banalmente il sistema di numerazione posizionale a base 26, solo che invece di utilizzare anche le usuali cifre numeriche (come accade per la rappresentazione esadecimale dei numeri) utilizza solo ed esclusivamente le lettere dell'alfabeto secondo la corrispondenza A=1, B=2, C=3, ..., X=24, y=25, Z=26, AA=27, AB=28 ecc. ecc..
Ora non è molto difficile comprendere che la conversione tra la rappresentazione letterale delle colonne e quella numerica e viceversa si opera esattamente come si opera per esempio nel convertire un numero decimale a binario e viceversa tenendo conto che appunto A=1, B=2, C=3, ... Y=25, Z=26
Ricorrendo alle funzioni nascoste di Excel presenti in delle dll che mi convertono le le etichette delle colonne nei rispettivi indici e viceversa, queste mi restituiscono un errore con Z, AZ, ... insomma con quelle colonne i cui indici sono congrui a 26 modulo zero
Per quello che mi serviva nel codice che ho realizzato mi sono dovuto scrivere io due funzioni che convertono le lettere delle colonne in indici delle colonne e viceversa
Ho però trovato non molte magagne in Excel, la più clamorosa sono gli indici delle colonne dei fogli di calcolo che sono normalmente rappresentate con le lettere dell'alfabeto ma che sotto il cofano vengono tradotti negli indici numerici 1,2,3,4 ... (la colonna A ha indice 1 e non zero).
La codifica tra le etichette e gli indici numerici è banalmente il sistema di numerazione posizionale a base 26, solo che invece di utilizzare anche le usuali cifre numeriche (come accade per la rappresentazione esadecimale dei numeri) utilizza solo ed esclusivamente le lettere dell'alfabeto secondo la corrispondenza A=1, B=2, C=3, ..., X=24, y=25, Z=26, AA=27, AB=28 ecc. ecc..
Ora non è molto difficile comprendere che la conversione tra la rappresentazione letterale delle colonne e quella numerica e viceversa si opera esattamente come si opera per esempio nel convertire un numero decimale a binario e viceversa tenendo conto che appunto A=1, B=2, C=3, ... Y=25, Z=26
Ricorrendo alle funzioni nascoste di Excel presenti in delle dll che mi convertono le le etichette delle colonne nei rispettivi indici e viceversa, queste mi restituiscono un errore con Z, AZ, ... insomma con quelle colonne i cui indici sono congrui a 26 modulo zero
Per quello che mi serviva nel codice che ho realizzato mi sono dovuto scrivere io due funzioni che convertono le lettere delle colonne in indici delle colonne e viceversa
In VBA potevi fare riferimento ad una cella sia usando gli indici riga colonna, che usando il nome della cella es Cells(1,1) = Range("A1"
Ho però trovato non molte magagne in Excel, la più clamorosa sono gli indici delle colonne dei fogli di calcolo che sono normalmente rappresentate con le lettere dell'alfabeto ma che sotto il cofano vengono tradotti negli indici numerici 1,2,3,4 ... (la colonna A ha indice 1 e non zero).
La codifica tra le etichette e gli indici numerici è banalmente il sistema di numerazione posizionale a base 26, solo che invece di utilizzare anche le usuali cifre numeriche (come accade per la rappresentazione esadecimale dei numeri) utilizza solo ed esclusivamente le lettere dell'alfabeto secondo la corrispondenza A=1, B=2, C=3, ..., X=24, y=25, Z=26, AA=27, AB=28 ecc. ecc..
Ora non è molto difficile comprendere che la conversione tra la rappresentazione letterale delle colonne e quella numerica e viceversa si opera esattamente come si opera per esempio nel convertire un numero decimale a binario e viceversa tenendo conto che appunto A=1, B=2, C=3, ... Y=25, Z=26
Ricorrendo alle funzioni nascoste di Excel presenti in delle dll che mi convertono le le etichette delle colonne nei rispettivi indici e viceversa, queste mi restituiscono un errore con Z, AZ, ... insomma con quelle colonne i cui indici sono congrui a 26 modulo zero
Per quello che mi serviva nel codice che ho realizzato mi sono dovuto scrivere io due funzioni che convertono le lettere delle colonne in indici delle colonne e viceversa
welcome to basic
Offset(10,0).
o (0,10), non ricordo
Una CPU a 16 bit completamente funzionante è stata riprodotta in Excel da uno youtuber che ha illustrato il tutto in un video. Capace di lavorare a 3 Hz, il processore include 128 KB di RAM, un display a 16 colori ed è accompagnato da un linguaggio assembly custom.
[/b]
Lo youtuber soffrirà sicuramente della sindrome di Lovelace
Scusa conosci il codice che ho scritto per stabilire se è vero o non è vero che Excel ha delle magagne sugli indice delle colonne? Ribadisco senza se e senza ma ... Excel ha problemi con le colonne i cui indici sono congrui a 26 modulo zero. Punto!
Studiati le congruenze e prova a scrivere del codice ...
Ad esempio se io voglio creare una foglio excel che esegue una macro e interrogando una DLL fa vedere a chi lo apre i dati della sua unità operativa per quanto possa proteggere la macro non ci vuole niente con un minimo di pratica a distruggere le protezioni e accedere al codice. A quel punto basta conoscere 2 bischerate di basic e la modifichi come ti pare.
Se risolvessero queste vulnerabilità sarebbe veramente uno strumento devastante.
Per affrontare e risolvere il problema di protezione che citi, basterebbe utilizzare un compilatore che converte il foglio di excel in un eseguibile, tipo XCell Compiler, xlCompiler...?
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".