Ken Shirriff, avec un groupe baptisé Opcode Collective, a publié une analyse détaillée de l'instruction FSCALE du coprocesseur flottant 8087 d'Intel, sorti en 1980. FSCALE met à l'échelle un nombre par une puissance de deux en ajustant son exposant, une tâche qui paraît anodine comparée à une multiplication ou une division.

FSCALE microcode (8087)
#0748 st(0) -> tmpA           Input argument from top of stack
#0749 jmp #0776 if tmpA:tag ZERO   Bail if 0
#0750 stackPtr++
#0751 st(0) -> tmpB           Scale argument from stack(1)
#0752 stackPtr--
#0753 jmp #0776 if tmpB:tag ZERO   Bail if 0
#0754 expconst 0x403e         Const 403e: exp shift to convert to int
#0755 jmp #0763 if not tmp empty/special/div
#0756 call SPECIAL_TMPS       Special handling
#0757 jmp #0762 if flag
#0758 jmp #0761 if not tmpB:tag SPECIAL
#0759 except:invalid          Invalid exception, use NaN
#0760 NaN -> tmpA
#0761 jmp #0776 if intr
#0762 jmp #0775 if expConv[0] Return tmpA if expConv set, otherwise continue

Shirriff a constaté l'inverse. Le microcode de FSCALE compte plus de 140 micro-instructions réparties sur trois niveaux d'appels de sous-routines, extraites de la ROM de microcode totale de 1648 instructions de la puce. Il a photographié au microscope une puce 8087 (5 mm sur 6 mm) pour retracer comment la routine sollicite l'additionneur, le décaleur, le convertisseur d'exposant et la ROM de constantes d'exposant.

Le chemin simple, mettre à l'échelle un nombre normal par une valeur non nulle, prend environ 22 micro-instructions à partir de l'adresse #0748 : les deux arguments de la pile sont chargés dans les registres temporaires tmpA et tmpB, le facteur d'échelle est converti en entier via un décalage piloté par la constante 0x403e, puis ajouté à l'exposant.

L'essentiel de la complexité vient des cas particuliers. Une sous-routine nommée SPECIAL_TMPS gère les registres de pile vides, les nombres dénormalisés, les infinis et les NaN. Si les deux opérandes sont des NaN, le microcode compare leurs bits de fraction et renvoie le plus grand, un comportement documenté mais rarement exploité, censé permettre aux programmeurs de savoir quel NaN a déclenché quelle erreur. D'autres sous-routines, NONNORMAL_RESULT, CREATE_DENORM et ADJUST_PRECISION, traitent le dépassement, le sous-dépassement, la création de nombres dénormalisés et l'arrondi selon les trois précisions prises en charge par la puce et ses quatre modes d'arrondi.

Shirriff présente le 8087 comme l'ancêtre du standard IEEE 754, utilisé aujourd'hui par presque tous les ordinateurs, élaboré avec l'apport du spécialiste du calcul numérique William Kahan. Il rappelle que la bibliothèque logicielle 8087 Support Library d'Intel, un émulateur pour les machines dépourvues de la puce, nécessitait environ 16 kilo-octets de code 8086 pour reproduire ce que le 8087 accomplit avec environ 3,3 kilo-octets de microcode.