Comment fonctionne un ordinateur ?

Exemple du Little Man Computer

Le Little Man Computer est un modèle éducatif d'ordinateur qui a été inventé dans les années 60 par le Dr. Stuart Madnick. Il s'agit d'une pièce dans laquelle il y a un petit bonhomme, 100 boîtes à lettres numérotées de 0 à 99 et quatre boîtes spéciales marquées Entrée, Sortie, Compteur d'instruction et Accumulateur. Sur cette page vous pourrez simuler le fonctionnement d'un Little Man Computer.

Les boîtes représentent la mémoire du Little Man Computer. Le numéro d'une boîte est ce qu'on appelle son adresse, donc lorsque l'on dit "la valeur à l'adresse A", c'est la même chose que "le nombre qui est dans la boîte numéro A". Les ordinateurs modernes ont bien plus de 100 cases dans leur mémoire, par exemple celui que j'utilise en a précisément 16241912. Les deux boîtes spéciales entrée et sortie permettent au Little Man Computer de communiquer avec l'extérieur de la pièce, c'est avec le même système que l'on interagit avec les ordinateurs lorsque l'on utilise un clavier ou un écran.

Pour programmer l'ordinateur, on lui donne une série d'instructions élémentaires à effectuer (addition, soustraction, déplacer des valeurs dans la mémoire, ...). Ces instructions sont codés en nombres qui sont mis dans la mémoire, il n'y a donc pas de différence entre les instructions et les données. Pour faire fonctionner l'ordinateur, le petit bonhomme a un tableau qui explique le codage des instructions. D'abord, il prend le nombre qui se trouve dans la boîte dont le numéro est indiqué par le compteur d'instruction. Ensuite il regarde dans le tableau l'action qu'il doit effectuer. Enfin, il passe à l'instruction suivante en ajoutant 1 au compteur d'instruction.

Plus d'informations sur la page Wikipédia à propos du Little Man Computer.

Jeu d'instructions

Plusieurs personnes ont codé de différentes manières les instructions de leur Little Man Computer, mais tout le monde est d'accord pour les représenter par des nombres entre 0 et 999, avec les deux derniers chiffre qui peuvent donner un numéro de boîte. Voilà les instructions qu'utilise ma version du Little Man Computer :

Version PDF

Code Nom Mnémonique Action
000 Arrêt HLT Arrêter l'exécution du programme, le compteur d'instruction n'est pas incrémenté.
001 Entrée INP Prendre le nombre qui est dans la boîte d'entrée et le mettre dans l'accumulateur.
002 Sortie OUT Prendre le nombre qui est dans l'accumulateur et le mettre dans la boîte de sortie.
100 à 199 Sauvegarde STA Prendre le nombre qui est dans l'accumulateur et le mettre à l'adresse formée par les deux derniers chiffres du code.
200 à 299 Chargement LDA Prendre le nombre dans la boîte à l'adresse formée par les deux derniers chiffres du code et le mettre dans l'accumulateur.
300 à 399 Addition ADD Ajouter à l'accumulateur la valeur à l'adresse formée par les deux derniers chiffres du code.
400 à 499 Soustraction SUB Soustraire à l'accumulateur la valeur à l'adresse formée par les deux derniers chiffres du code.
500 à 599 Saut BRA Mettre dans le compteur d'instruction le nombre formé par les deux derniers chiffres du code. Ne pas incrémenter le compteur d'instruction.
600 à 699 Saut si zéro BRZ Si la valeur de l'accumulateur est égale à zéro alors faire BRA, sinon incrémenter le compteur d'instruction uniquement si le saut n'a pas eu lieu.
700 à 799 Saut si positif BRP Si la valeur de l'accumulateur est supérieure ou égale à zéro alors faire BRA, sinon incrémenter le compteur d'instruction uniquement si le saut n'a pas eu lieu.
800 à 899 Saut si négatif BRN Si la valeur de l'accumulateur est strictement inférieure à zéro alors faire BRA, sinon incrémenter le compteur d'instruction uniquement si le saut n'a pas eu lieu.
Le simulateur

La case jaune est celle que pointe le compteur d'instruction, c'est l'instruction qui va être effectuée en cliquant sur le bouton "Instruction suivante". À chaque instruction un message apparaît pour expliquer ce qu'il vient de se produire. Le bouton "Remise à zéro" met des zéros dans le compteur et dans l'accumulateur mais pas la mémoire.

Compteur d'instruction
Accumulateur
Message de l'ordinateur