Alcuni appassionati sono riusciti a estrarre e disassemblare il microcodice di un processore Intel 80386, considerato una "scatola nera" a causa della mancanza di documentazione. Un'immagine binaria del microcodice è stata ricreata tramite intelligenza artificiale a partire da fotografie ad alta risoluzione del die, e la logica è stata decifrata utilizzando i cablaggi presenti sul die. La struttura delle micro-operazioni, i campi, l'ordine di esecuzione e i marcatori di fine istruzione sono stati gradualmente determinati. I risultati del progetto sono pubblicati su GitHub come materiale di pubblico dominio.

Si è scoperto che nella CPU 80386 ogni istruzione viene eseguita interamente tramite microcodice, mentre nei processori 8086 e moderni alcune istruzioni vengono elaborate direttamente. Inoltre, a differenza dei processori 8086, il microcodice dell'80386 non implementa direttamente gli algoritmi, ma configura principalmente gli acceleratori hardware (moltiplicatore, divisore, shifter veloce, PTU - Protection Test Unit).
Lo studio ha inoltre rivelato una potenziale vulnerabilità di sicurezza nella gestione della bitmap dei permessi di I/O: durante l'accesso a porte a 4 byte, venivano controllati solo i bit di permesso per i primi 3 byte, mentre l'accesso al quarto byte non veniva verificato, il che, in teoria, consentiva l'accesso a registri hardware non accessibili.
Basandosi su microcodice pubblicato, è stata sviluppata una CPU z386 open-source, implementata in SystemVerilog e girata su un FPGA. Invece di implementare ogni istruzione come un RTL (Register-Transfer Layer) separato, lo z386 implementa strutture hardware controllate dal microcodice originale. Le prestazioni dell'implementazione risultante sono paragonabili a quelle di un PC 386 veloce (~70 MHz). Lo z386 ha eseguito con successo DOS 6/7, DOS/4GW, DOS/32A e giochi come Doom e Cannon Fodder.
Fonte: opennet.ru
