Des passionnés ont réussi à extraire et à désassembler le microcode du processeur Intel 80386, qui, en raison de l'absence de documentation, était considéré comme une "boîte noire". Une image binaire du microcode a été recréée avec l'aide de l'IA à partir de photographies à haute résolution de la puce, et la logique de fonctionnement a été décomposée par le traçage des connexions sur la puce. Progressivement, la structure des microinstructions (μ-ops), les champs, l'ordre d'exécution et les marqueurs de fin d'instruction ont été déterminés. Les travaux du projet ont été publiés sur GitHub comme domaine public.

Il a été découvert que dans le CPU 80386, chaque instruction est complètement exécutée via le microcode, alors que dans le 8086 et les processeurs modernes, une partie des instructions est traitée directement. De plus, contrairement aux processeurs 8086, le microcode du 80386 ne réalise pas les algorithmes directement, mais configure principalement les accélérateurs matériels (multiplicateur, diviseur, décalage rapide, PTU (Protection Test Unit)).
Au cours de l'étude, un problème de sécurité potentiel a également été découvert dans le traitement de la carte des droits d'accès aux entrées/sorties (bitmap des permissions d'E/S) : lors d'un accès sur 4 octets aux ports, les bits de droit d'accès n'étaient vérifiés que pour les 3 premiers octets, et l'accès au 4ème octet n'était pas contrôlé, ce qui permettait théoriquement d'accéder à des registres matériels dont l'accès devait être interdit.
Sur la base du microcode publié, un CPU open source z386 a été développé, réalisé en SystemVerilog et fonctionnant avec des FPGA. Au lieu de mettre en œuvre chaque instruction sous forme d'un RTL (Register-transfer level) séparé, le z386 utilise des structures matérielles contrôlées par le microcode d'origine. Les performances de l'implémentation préparée correspondent à celles d'un PC 386 rapide (~70MHz). Sous z386, il a été possible de faire fonctionner avec succès DOS 6/7, DOS/4GW, DOS/32A et des jeux tels que Doom et Cannon Fodder.
Source : opennet.ru
