Ken Shirriff hat gemeinsam mit einer Gruppe namens Opcode Collective eine detaillierte Reverse-Engineering-Analyse des FSCALE-Befehls in Intels 8087-Fließkomma-Coprozessor veröffentlicht, der 1980 auf den Markt kam. FSCALE skaliert eine Zahl um eine Zweierpotenz, indem es den Exponenten anpasst, eine Aufgabe, die im Vergleich zu Multiplikation oder Division trivial klingt.

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 fand das Gegenteil. Der Mikrocode von FSCALE umfasst mehr als 140 Mikrobefehle über drei Ebenen von Unterprogrammaufrufen, entnommen aus dem insgesamt 1648 Befehle großen Mikrocode-ROM des Chips. Er fotografierte einen 8087-Die (5 mal 6 Millimeter) unter dem Mikroskop, um nachzuvollziehen, wie die Routine Addierer, Schieberegister, Exponentenwandler und das Exponentenkonstanten-ROM des Chips nutzt.

Der einfache Pfad, das Skalieren einer normalen Zahl mit einem Wert ungleich null, benötigt etwa 22 Mikrobefehle ab Adresse #0748: Die beiden Stack-Argumente werden in die temporären Register tmpA und tmpB geladen, der Skalierungsfaktor wird über eine durch die Konstante 0x403e gesteuerte Schiebeoperation in eine Ganzzahl umgewandelt und anschließend zum Exponenten addiert.

Der Großteil der Komplexität stammt aus Randfällen. Ein Unterprogramm namens SPECIAL_TMPS behandelt leere Stack-Register, denormalisierte Zahlen, Unendlichkeiten und NaNs. Sind beide Operanden NaN, vergleicht der Mikrocode ihre Bruchbits und gibt den größeren Wert zurück, ein dokumentiertes, aber selten genutztes Verhalten, das Programmierern erlauben sollte, nachzuvollziehen, welcher NaN welchen Fehler ausgelöst hat. Weitere Unterprogramme, NONNORMAL_RESULT, CREATE_DENORM und ADJUST_PRECISION, kümmern sich um Überlauf, Unterlauf, die Erzeugung von Denormalzahlen und die Rundung auf die drei vom Chip unterstützten Genauigkeiten unter vier Rundungsmodi.

Shirriff ordnet den 8087 als Vorläufer von IEEE 754 ein, dem Fließkomma-Standard, den heute fast jeder Computer nutzt und der mit Beteiligung des Numerikers William Kahan entstand. Er weist darauf hin, dass Intels 8087 Support Library, ein Software-Emulator für Rechner ohne den Chip, rund 16 Kilobyte 8086-Code benötigte, um nachzubilden, was der 8087 mit etwa 3,3 Kilobyte Mikrocode leistet.