L'entusiasti anu estrattu è smuntatu cù successu u microcodice di un processore Intel 80386, chì era cunsideratu una "scatula nera" per via di a mancanza di documentazione. Una maghjina binaria di u microcodice hè stata ricreata aduprendu l'IA da fotografie à alta risoluzione di u die, è a logica hè stata decifrata aduprendu u cablaggio in u die. A struttura di i microoperazioni, i campi, l'ordine di esecuzione è i marcatori di fine istruzione sò stati determinati gradualmente. I risultati di u prugettu sò publicati nantu à GitHub cum'è duminiu publicu.

Hè statu scupertu chì in a CPU 80386, ogni istruzione hè eseguita interamente per mezu di microcodice, mentre chì in l'8086 è in i processori muderni, alcune istruzioni sò trattate direttamente. Inoltre, à u cuntrariu di i processori 8086, u microcodice in l'80386 ùn implementa micca direttamente algoritmi, ma configura principalmente acceleratori hardware (moltiplicatore, divisore, fast shifter, PTU (Protection Test Unit)).
U studiu hà ancu scupertu un putenziale prublema di sicurezza in a gestione di a mappa di bit di permessu IO: quandu si accede à i porti di 4 byte, solu i bit di permessu per i primi 3 byte sò stati verificati, è l'accessu à u 4u byte ùn hè statu verificatu, ciò chì teoricamente permette l'accessu à i registri hardware chì ùn devenu micca esse accessibili.
Basatu annantu à u microcodice publicatu, hè stata sviluppata una CPU z386 open-source, implementata in SystemVerilog è chì funziona annantu à una FPGA. Invece d'implementà ogni istruzione cum'è un RTL (Register-Transfer Layer) separatu, u z386 implementa strutture hardware cuntrullate da u microcodice originale. E prestazioni di l'implementazione risultante currispondenu à quelle di un PC 386 veloce (~70 MHz). U z386 hà eseguitu cù successu DOS 6/7, DOS/4GW, DOS/32A, è ghjochi cum'è Doom è Cannon Fodder.
Source: opennet.ru
