Excel est un outil beaucoup plus puissant qu’on ne pourrait le croire à première vue. Des tas d’utilisateurs espiègles l’ont déjà détourné de sa fonction originale, par exemple pour composer de la musique ou jouer à des jeux. On se souvient notamment de la version 1997 qui comprenait une simulation spatiale rudimentaire, ou de la version 2000 qui cachait un jeu de course en bonne et due forme.
Mais récemment, Inkbox, un autre savant fou du tableur, a repoussé les limites du concept à un niveau assez impressionnant. Dans une vidéo repérée par Tom’s Hardware, il s’est servi du logiciel pour créer… un véritable processeur 16 — Bit fonctionnel.
Son idée est partie d’un constat simple : les ensembles de transistors et de résistances qui sont à la base du fonctionnement d’un ordinateur classique peuvent être émulés dans un tableur, à condition de surmonter quelques obstacles associés à cette virtualisation. Et ce n’était pas toujours évident. Car Inkbox s’est imposé une restriction considérable : utiliser seulement les fonctionnalités natives d’Excel, sans plugin et sans programmer de fonctions plus sophistiquées en Visual Basic.
Émuler les différents organes d’un processeur
Par exemple, Inkbox a dû trouver un moyen de reproduire le cycle d’horloge. Il s’agit d’un signal périodique mesuré en hertz qui rythme les actions du circuit. C’est un peu le métronome de la machine. Il a utilisé les fonctions du tableur pour reconstituer une bascule, ou flip flop — un type de circuit logique qui peut alterner périodiquement entre deux états, en l’occurrence 0 et 1.
Il s’est ensuite attaqué à la création d’un ISA (Instruction Set Architecture). C’est un ensemble d’instructions qui décrivent la façon dont les programmes interagissent avec le processeur pour qu’il puisse traiter les différentes opérations qui lui sont adressées. Il peut s’agir d’additionner deux éléments (ADD), d’en transférer certains d’un endroit de la mémoire à un autre (MOV), de diverses portes logiques comme OR, et ainsi de suite.
Cela passe notamment par la création de registres, des bouts de mémoire très rapide qui peuvent être considérés comme les plans de travail du CPU. C’est là que sont stockées et traitées les données avec lesquelles le processeur travaille à un instant donné. De nombreux CPU grand public sont construits sur la base d’une architecture appelée x86-64, où ces registres sont constitués de 64 bits (des 0 ou des 1). Par souci de simplicité, Inkbox a créé des registres de 16 bits, ce qui en fait un processeur 16-bit.
Il a ensuite entrepris d’ajouter de la RAM, la mémoire vive du système. Pour cela, il a simplement utilisé des pages de cases remplies de 0 et de 1 et défini de nouvelles instructions pour inscrire et extraire les données correspondantes. Enfin, il a créé une nouvelle page remplie de cases colorées qui joue le rôle d’écran virtuel avec une résolution de 128×128 pixels.
Un langage assembleur fait maison
A ce stade, son système était désormais fonctionnel, mais entièrement manuel ; la seule manière de réaliser des opérations était de les réaliser à la main, en entrant toutes les instructions et les adresses mémoires dans un ensemble de cases prévues à cet effet. La dernière étape de son expérience a donc été d’automatiser tout cela.
Pour pouvoir faire tourner de vrais programmes enregistrés dans la mémoire, Inkbox avait donc besoin d’un compilateur — un outil logiciel capable de traduire du code C ou Java, par exemple, en instructions compréhensibles par le processeur. Et pour cela, il a dû créer son propre langage assembleur — la représentation la plus basique des instructions qui peuvent être exécutées par le CPU.
En utilisant ce nouveau langage baptisé Excel-ASM16 et un zeste de code Python, il a pu concevoir un compilateur qui lui a permis de faire tourner des programmes rudimentaires sur son système. Pour plus de détail sur l’implémentation des différents composants, nous vous suggérons de parcourir la vidéo d’Inkbox (en anglais) ; mais en pratique, cela signifie qu’il disposait désormais d’un vrai ordinateur fonctionnel contenu entièrement dans le tableur.
Inutile, mais indispensable
On peut toutefois se demander à quoi pourrait servir un tel bidule en pratique, et la réponse est… à rien. Évidemment, les performances de ce système sont ridiculement faibles par rapport à celles d’un ordinateur standard, même âgé de plusieurs décennies. Avec un CPU de 16 bits qui ne tourne qu’à 2 ou 3 Hz et 128 kb de mémoire vive, il serait impossible de faire fonctionner vos programmes préférés, même s’ils étaient compatibles avec cette architecture.
Il s’agit toutefois d’une expérience très intéressante. Comme les fameux « ordinateurs de redstone » conçus par certains magiciens de Minecraft, elle comporte un aspect pédagogique qui peut aider à comprendre les principes de base de l’informatique moderne.
Mais surtout, cela montre une nouvelle fois que les préceptes de l’informatique vont bien au-delà des supports standard que nous utilisons tous au quotidien. Ce n’est donc probablement qu’une question de temps avant que de nouvelles approches se démocratisent, et il sera fascinant de suivre l’évolution de cette technologie qui ne cesse de transformer notre civilisation depuis les premières inventions d’Alan Turing.
🟣 Pour ne manquer aucune news sur le Journal du Geek, abonnez-vous sur Google Actualités. Et si vous nous adorez, on a une newsletter tous les matins.