Aller au contenu

Readme

Le processeur papier M999

Le M999 est un processeur papier permettant de comprendre concrètement le fonctionnement d'une architecture Von Neumann. Il s'agit d'une variante du M99 avec un jeu d'instructions simplifié.


Présentation

Le M999 est une machine dotée de : - 1000 cases mémoire (adresses de 000 à 999), chacune contenant un mot de 3 chiffres - 3 registres : A, B et R (accumulateur/résultat) - 1 compteur de programme (PC) indiquant l'adresse de la prochaine instruction

M999


Jeu d'instructions (version 1)

Opcode Instruction Description
0 xy LDA xy Charge le mot mémoire d'adresse xy dans le registre A
1 xy LDB xy Charge le mot mémoire d'adresse xy dans le registre B
2 xy STR xy Copie le contenu du registre R dans le mot mémoire d'adresse xy
3 00 ADD R := A + B
3 01 SUB R := A - B
3 99 NOP Ne fait rien
4 rs rd MOV rs rd Copie le registre source dans le registre destination
5 xy JMP xy Saut inconditionnel à l'adresse xy
6 xy JPP xy Saut à l'adresse xy si R > 0

Registres : 0 = A, 1 = B, 2 = R


Jeu d'instructions (version 2)

La version 2 ajoute deux instructions utiles pour l'algorithme de multiplication russe :

Opcode Instruction Description
3 02 DIV2 Divise A par 2 : quotient dans R, reste dans B
3 03 MUL2 Multiplie A par 2 : résultat dans R

Cycle d'exécution

Le processeur répète le cycle suivant :

  1. Fetch : Lire l'instruction à l'adresse PC
  2. Decode : Décoder l'opcode pour identifier l'opération
  3. Execute : Exécuter l'instruction
  4. Incrémenter PC (sauf si saut)

Le programme s'arrête quand PC atteint 999.


Différences avec le M99

Opération M99 M999
Charger A 1xy 0xy
Charger B 2xy 1xy
Stocker R 0xy 2xy
Addition 400 300
Soustraction 401 301

Le M999 utilise une numérotation plus intuitive : 0 pour charger A, 1 pour charger B, 2 pour stocker.


Activité : La multiplication paysanne russe

Cette méthode ancestrale permet de multiplier deux nombres en utilisant uniquement : - Des divisions par 2 (partie entière) - Des multiplications par 2 - Des additions

Algorithme

Exemple : 13 × 5

Colonne A (÷2) Colonne B (×2)
13 5
6 ~~10~~
3 20
1 40

On raye les valeurs de B quand A est pair, puis on additionne les valeurs restantes : 5 + 20 + 40 = 65

Objectif

Implémenter cet algorithme sur le M999 en utilisant le jeu d'instructions version 2.

Aide : Pour savoir si A est pair, on utilise DIV2 (3 02) qui place le reste dans B. Si B = 0, alors A était pair.


Pour aller plus loin

  • Écrire un programme qui calcule la factorielle d'un nombre
  • Écrire un programme qui teste si un nombre est premier
  • Comparer l'efficacité de la multiplication russe avec une multiplication par additions successives

Sources : - Informatique Sans Ordi - Philippe Marquet et Martin Quinson - Jeu d'instructions adapté par Philippe Boddaert


Auteur : Florian Mathieu

Licence CC BY NC

Licence Creative Commons