Entusiaster har med succes ekstraheret og disassembleret mikrocode fra Intel 80386-processoren, som på grund af manglende dokumentation blev betragtet som en "black box". En binær image af mikrocode blev genskabt ved hjælp af AI baseret på fotografier af chippen i høj opløsning, og logikken blev analyseret ved at trace forbindelserne på chippen. Gradvis blev strukturen af mikrokommander (μ-ops), felter, udførelsesrækkefølge og slutmarkører for instruktioner identificeret. Resultaterne af projektet er offentliggjort på GitHub som offentligt domæne.

Det er blevet identificeret, at i CPU 80386 udføres hver instruktion fuldt ud via mikrocode, mens i 8086 og moderne processorer behandles en del instruktioner direkte. Desuden, i modsætning til 8086-processorer, implementerer mikrocode i 80386 ikke algoritmer direkte, men konfigurerer hovedsageligt hardwareacceleratorer (multiplikator, divider, hurtig skift, PTU (Protection Test Unit)).
I løbet af undersøgelsen blev der også opdaget et muligt sikkerhedsproblem i behandlingen af adgangsniveauet til input/output (IO permission bitmap): ved en 4-byte adgang til portene blev adgangsbittene kun kontrolleret for de første 3 bytes, mens adgangen til den 4. byte ikke blev kontrolleret, hvilket teoretisk tillod adgang til hardwareregistre, der burde have været blokeret.
På baggrund af den offentliggjorte mikrocode er der udviklet en åben CPU z386, implementeret i SystemVerilog-sprog og kørende på FPGA. I stedet for at implementere hver instruktion som et separat RTL (Register-Transfer Level) i z386, er der implementeret hardwarestrukturer, som styres af den originale mikrocode. Ydelsen af den forberedte implementering svarer til en hurtig 386 PC (~70MHz). Under z386 blev det med succes muligt at køre DOS 6/7, DOS/4GW, DOS/32A og spil som Doom og Cannon Fodder.
Kilde: opennet.ru
