Dis-moi, comment ça fonctionne un ordinateur ?

Récemment, lors d’un workshop, le sketch d’un des étudiants atteignait la limite de mémoire de l’Arduino sur lequel il était censé tourner. Effectivement, nous sommes désormais habitués à des giga-octets de mémoire vive, voire des tera-octets sur nos disques durs. Or, l’Arduino Uno ne dispose que de 32 K, y compris pour le runtime lui permettant de fonctionner.

Mon premier ordinateur, un Sinclair ZX81, n’avait qu’un 1 K [1024 octets] de mémoire vive. Pour faire quelque chose d’intéressant avec ce bout de plastique, il était obligatoire de passer par les codes de son processeur, le Z80 de Zilog. Par la suite, il fut un temps – lors des années 80 – que je programmais couramment en langage machine pour le 6502, le microprocesseur des ordinateurs Apple de la série II. Aujourd’hui, si j’ai oublié les OpCodes et autres Mnémonics de ces langages ‘Assembleur’, j’ai gardé les techniques et optimisations qui permettaient de gagner de précieuses octets en espace mémoire, sans parler de la vitesse d’exécution.

Donc, par une ironie de l’histoire, ces techniques me servent aujourd’hui à optimiser le code pour l’Arduino où je me retrouve confronté au même problème de ‘étroitesse’ de mémoire.

Le weekend dernier, j’ai pris un bain de nostalgie en relisant un livre d’initiation au langage assembleur pour le 6502, et plus spécifiquement pour l’Apple II. J’ai trouvé le livre sur archive.org dans la partie dédiée aux livres sur informatique.

Voici un lien vers cette même section. Fouillez, explorez, vous y trouverez peut-être des choses qui parlent des viels ordinateurs que vos parents utilisaient…

Sur un sujet similaire, l’éditeur de livres britannique pour la jeunesse, Usburne, a mis en ligne [gracieusement] ses livres des années 80 qui servait, justement, à initier les enfants britanniques de l’époque aux ordinateurs. Voici donc, pour votre délectation :

Voir aussi