Introduction à la programmation en assembleur (processeurs 64 bits de la famille 80x86)
11.3 Les registres du processeur à virgule flottante (x87)

Du point de vue du programmeur, le processeur à virgule flottante (FPU : floating point unit) est une unité distincte du processeur central (CPU: central processing unit). Il existe bien entendu des « ponts » entre les deux, mais chacun a ses propres registres et son propre jeu d'instructions.

Ceci est encore un héritage de l'époque du 8086 qui était limité aux instructions sur les entiers signés et non-signés, auquel on pouvait adjoindre un second processeur, le 8087 que l'on appelait coprocesseur arithmétique.

Lorsque l'on a intégré les instructions et registres à virgule flottante, il a été décidé de préserver la compatibilité avec les logiciels écrits pour des machines à 2 processeurs 8086 et 8087.

Définition

Le FPU possède 8 registres de 80 bits chacun (1 bit pour le signe, 15 bits pour l'exposant, 64 bits pour la mantisse). Ces 8 registres ne sont pas adressables directement comme dans le cas de l'unité d'arithmétique entière. Ils constituent une pile de registres, que l'on nommera %st(0), %st(1), ..., %st(7). %st(0) désigne le sommet de la pile (c'est à dire le dernier élément empilé) et %st(i) désigne le i-ème élément de la pile de registres.