Chapitre 1
MAC, un ordinateur virtuel
1.1 Introduction
Ce chapitre présente MAC, un ordinateur simplifié, virtuel, qui se veut "pédagogique", composé d’une CPU et
d’une mémoire. Il existe un logiciel sim, simulateur et metteur au point de cette machine, un assembleur, asm,
générant du code pour cette machine, et un micro compilateur C, mcc, qui accepte un sous-ensemble du langage C, et
génère des instructions en langage d’assemblage. Ce document présente les spécifications de la machine MAC.
1.2 La machine MAC
1.2.1 Description générale
La machine MAC est une machine à mots de 16 bits. Son espace d’adressage est de 64 ko. Dans un mot, les bits
sont numérotés de gauche à droite, de 0 à 15, le bit 0 étant le bit de poids fort et représentant le signe du mot.
1.2.2 La CPU
La CPU (Central Processing Unit, ou Unité Centrale) se compose des éléments suivants, visibles du programmeur :
– 1 registre programme 16 bits : PC (Program Counter)
– 1 registre état 16 bits : PSW (Program Status Word)
– bit 0 : R (Run) - 1 ssi la machine est en cours d’exécution
– bits 1-2 : inutilisés
– bit 3 : P (Parity) - bit de parité (poids faible) du dernier résultat. 1 ssi ce résultat est pair.
– bit 4 : O (Overflow) - 1 ssi un overflow s’est produit au cours d’un calcul
– bit 5 : C (Carry) - bit de retenue
– bit 6 : S (Sign) - bit de signe (poids fort) du dernier résultat (1 si négatif)
– bit 7 : Z (Zero) - 1 ssi le dernier résultat est nul
– bits 8-15 : octet indiquant la nature de la dernière interruption
– 16 registres 16 bits, R0 à R15
Note
– R0 et R1, réunis, sont utilisés comme registre signé 32 bits pour le résultat d’une multiplication.
– R0 et R1, réunis, sont utilisés comme registre signé 32 bits pour l’opérande d’une division.
– R15 est utilisé comme pointeur de pile pour les appels de sous-programmes.
A l’initialisation de la machine, tous les registres et tous les mots de la mémoire contiennent la valeur 0.
La CPU dispose d’une horloge, dont la fréquence est réglable. Les vitesses des instructions sont estimées en
"ticks" de l’horloge. Il existe également un compteur d’instructions, qui peut être armé et positionné : une interruption
(ErrClck) sera levée si le nombre d’instructions exécutées par la CPU dépasse la valeur du compteur.
5