• Aucun résultat trouvé

Les registres du processeur

Dans le document ARCHITECTUREDES ORDINATEURS (Page 51-56)

3.2 Le processeur

3.2.1 Les registres du processeur

Registres de travail

Lesregistres de travail permettent de ranger des r´esultats interm´ediaires sans acc´eder `a la m´emoire. La manipulation des donn´ees est ainsi simplifi´ee (on n’a pas `a g´erer d’adresse) et le temps d’acc`es aux informations est plus court. Dans la plupart des processeurs `a architecture classique, le nombre des registres est de l’ordre de 8 `a 32.

Registres accumulateurs

Dans beaucoup de machines d’architecture classique, le jeu d’instruction privil´egie certains registres dits registres accumulateurs ou plus simplement accumulateurs. Ceux-ci se distinguent des autres registres par le fait que la grande majorit´e des op´erations peuvent porter sur leur contenu et en recevoir les r´esultats. Ainsi, sur les microprocesseurs de la famille Intel X86, toutes les instructions de transfert entre m´emoire et registre, ou entre registres, peuvent affecter le registre accumulateur d´esign´e par AX. Il n’en est pas de mˆeme pour les registres de segment dont les possibilit´es de manipulation sont bien plus r´eduites.

Pointeurs de pile

Les pointeurs de pile (Stack Pointer) sont principalement utilis´es dans le m´ecanisme des appels de sous-programmes. La pile est une zone de m´emoire.

La gestion de cette zone (sch´ema 3.5) est li´ee `a l’existence du registre appel´e registre de pile oupointeur de pile(stack pointer).

Adresses

Pointeur de pile n

n+1

Mémoire

Figure3.5 : La pile

Un pointeur de pile est un registre d’adresse fournissant l’adresse d’un mot-m´emoire d´esign´e par le terme desommet de pile. L’adresse du sommet de pile est g´en´eralement celle du mot de la pile d’adresse nla plus petite.

La pile est manipul´ee par instructions sp´eciales ou lors de sauvegardes au-tomatiques de l’´etat du processeur (appels et retours de sous-programmes, in-terruptions. . . ).

Exemple 3.1 En situation initiale (figure 3.6) un pointeur de pile contient la valeur 100016, adresse du mot m´emoire en sommet de pile. On supposera que la mise en pile se fait sur une seule case m´emoire.

1000

Adresses Pointeur de pile

Mémoire 1000

Figure3.6 : Mise en pile, situation initiale

Lors de la “mise en pile” de l’information, le pointeur de pile estd´ecr´ement´e et l’information est rang´ee en sommet de pile, ici `a l’adresse 0FFF16 (figure 3.7).

Dans certaines machines, la pile est r´ealis´ee `a l’aide d’une m´emoire rapide distincte de la m´emoire principale (celle qui contient donn´ees et programme).

Information mise en pile 1000Ê

Adresses Pointeur de pile

0FFF 0FFF

Mémoire

Figure3.7 : Ecriture dans la pile On parle alors depile cˆabl´ee.

Registre des drapeaux

Le registre des drapeaux (Flags Register) ou registre de codes conditions (Condition Code Registre) joue un rˆole qui peut ˆetre mis en ´evidence par l’addition avec retenue. Lorsqu’on effectue la somme de deux nombres entiers cod´es sur plusieurs mots de m´emoire, l’op´eration doit ˆetre r´ealis´ee en plusieurs instructions d’addition, chacune ne portant que sur un mot. Si la premi`ere instruction n’a pas en prendre en compte de retenue, puisqu’elle porte sur les poids faibles des op´erandes, il n’en est pas de mˆeme pour les suivantes. La retenue r´esultant de l’ex´ecution d’une addition est rang´ee dans le registre des drapeaux. Celui-ci m´emorise les informations li´ees `a l’ex´ecution de certaines instructions telles que les instructions arithm´etiques et instructions logiques.

Remarques:

1. Les drapeaux, sont, entre autres, utilis´es par les instructions de branche-ment conditionnel.

2. Toutes les instructions ne modifient pas les drapeaux. Dans les micropro-cesseur de la famille X86 d’Intel, les instructions de mouvement (trans-ferts de registre `a registre ou entre m´emoire et registre) ne modifient pas les drapeaux.

3. Le terme “registre des drapeaux” n’est pas tout `a fait correct, dans la mesure o`u les drapeaux peuvent ˆetre modifi´ess´epar´ement. Il s’agit plutˆot d’un ensemble de bascules que d’un registre.

4. L’ensemble minimal de drapeaux, g´en´eralement implant´e, est le suivant :

− Drapeau deretenue CY(Carry) ;

− Drapeau de nullit´e Z indiquant qu’une op´eration arithm´etique ou logique a donn´e un r´esultat nul, ou qu’il y a ´egalit´e apr`es une instruc-tion de comparaison ;

− Drapeau deparit´equi est un indicatif de la parit´e du nombre de bits

`

a 1 dans le r´esultat d’une op´eration ;

− Drapeau de signe S qui n’est qu’une copie du bit de poids fort du r´esultat de l’instruction qui vient d’ˆetre ex´ecut´ee ;

− Drapeau de d´ebordement (Overflow) qui est un indicateur pouvant ˆetre utilis´e apr`es ex´ecution d’op´erations portant sur des entiers cod´es en compl´ement `a deux.

Remarque: Si on effectue des additions sur des nombres utilisant une repr´esentation binaire en compl´ement `a deux, il faut ´eviter toute erreur due

`

a une retenue qui se propagerait “dans” le bit de signe en lui donnant une valeur erron´ee. Prenons pour exemple des nombres cod´es sur quatre bits en compl´ement `a deux. Appelons R et S les drapeaux de retenue et de signe.

D´esignons de plus par rla retenue engendr´ee par l’addition des trois bits de poids faible (sch´ema3.8).

r Signe Retenue

S R

Figure3.8 : Signe et retenue

On examine, tour `a tour, tous les cas pouvant se produire en commen¸cant par le cas de deux nombres positifs.

− Donnons aux op´erandes les valeurs 3 et 5 :

A = 0 0 1 1 → +3

B = 0 1 0 1 → +5

A+B = 1 0 0 0 → −8

Le r´esultat obtenu est inexact. On note que r prend la valeur 1 tandis que R et S prennent les valeurs 0 et 1 respectivement. Dans le cas o`u le r´esultat est juste, par exemple avec A = 2 etB = 3, alors r, R et S prennent la valeur 0.

− Dans le cas de deux nombres n´egatifs :

A = 1 0 1 0 → −6

B = 1 0 1 1 → −5

A+B = 1 0 1 0 1 → +5

Pour ces valeurs deAet Bdonnant un r´esultat erron´e, on note quer,R etS prennent respectivement les valeurs 0, 1 et 0. Lorsque le r´esultat est juste, les valeurs prises parr,R etS sont 1, 1 et 1.

− Pour des nombres de signes oppos´es, on constate qu’aucune erreur ne se produit :

A = 0 1 1 0 → +6

B = 1 0 1 1 → −5

A+B = 1 0 0 0 1 → +1

On fait le bilan de tous les cas possibles en reportant dans un tableau de Karnaugh la valeur 1 lorsqu’on a un cas d’overflow. On note OV le drapeau indiquant ces cas :

00 01 11 10 RS

0 0 0 Φ 1

1 Φ 1 0 0

r OV

Le bit de d´ebordementOVvaut alorsR⊗r=Rr+rR.

Remarque: il existe un drapeau appel´eHalf Carryqui n’est g´en´eralement pas utilisable directement par le programmeur. Il est utilis´e pour la propagation de la retenue lorsqu’on travaille sur des nombres cod´es en DCB. Consid´erons l’addition des deux nombres 1810et 3510cod´ees en DCB :

Base 10 Codage DCB

18 0001 1000DCB

+35 0011 0101DCB

= 53 = 0101 01011DCB

L’additionneur travaillant en compl´ement `a deux, il produit le r´esultat 0100 1101. Une retenue interm´ediaire Half Carry indique que le r´esultat de l’addition des chiffres de poids faible est>9. Elle est utilis´ee de mani`ere in-terne lorsqu’on d´esire disposer d’un r´esultat lui aussi cod´e en DCB `a l’aide d’instructions d’ajustement d´ecimal. Ainsi, dans le processeur Intel X86, l’addition des deux entiers 8 bits cod´es DCB pr´ec´edents peut s’effectuer de la fa¸con suivante (al et bh sont des registres 8 bits) :

; al contient 18 (DCB) soit 0001 1000

; bh contient 35 (DCB) soit 0011 0101 add al,bh ; al + bh --> al : 18 + 35 --> 4D daa ; ajustement decimal de al: 4D --> 53

Registres d’adressage

Les registres peuvent avoir un rˆole dans l’adressage des op´erandes en m´emoire.

Les registres impliqu´es peuvent ˆetre soit des registres de travail, soit des re-gistres sp´ecialis´es, le jeu d’instructions d´efinissant les rˆoles de chacun d’entre eux. On peut ainsi trouver :

− des registres d’indirection dont le contenu pourra ˆetre consid´er´e comme une adresse ;

− des registres d’indexation intervenant comme un d´eplacement dans le calcul d’adresse, c’est-`a-dire une quantit´e `a ajouter `a une adresse ;

− des registres debasefournissant une adresse dans les calculs d’adresse par indexation (l’adresse de l’op´erande est obtenue par addition des contenus des registres de base et d’index) ;

− des registres desegments(voir plus loin le chapitre7), delimites. . .

Dans le document ARCHITECTUREDES ORDINATEURS (Page 51-56)