Entusiastid suutsid edukalt vĂ€lja vĂ”tta ja disassembeldada Intel 80386 protsessori mikrokoodi, mida puuduvate dokumentide tĂ”ttu peeti "mustaks karbiks". Mikrokoodi binaarne pilt taastati AI abiga, kasutades kĂ”rge resolutsiooniga kristalli fotosid, ning töölogika analĂŒĂŒsiti kristalli ĂŒhenduste jĂ€rgimise kaudu. Aja jooksul mÀÀrati mikrokĂ€skude (ÎŒ-ops) struktuur, vĂ€ljad, tĂ€itmise jĂ€rjekord ja kĂ€skluste lĂ”pumĂ€rgid. Projekti tulemused on avaldatud GitHubis kui avalik omandus.

Selgus, et CPU 80386 iga kÀsk tÀidetakse tÀielikult mikrokoodi abil, samas kui 8086 ja kaasaegsetes protsessorites töödeldakse osa kÀskudest otse. Lisaks ei rakenda 80386 mikrokood, erinevalt 8086 protsessoritest, algoritme otse, vaid peamiselt konfigureerib riistvaralisi kiirendajaid (korrutaja, jagaja, kiire nihke, PTU (Protection Test Unit)).
Uuringu kÀigus avastati ka vÔimalik turvaprobleem, mis seondus sisend-/vÀljundÔiguste bitikaardi (IO permission bitmap) töötlemisega: 4-baidise juurdepÀÀsu puhul kontrolliti Ôiguste bitte ainult kolme esimese baidi jaoks, samas kui neljanda baidi juurdepÀÀsu ei kontrollitud, mis teoreetiliselt vÔimaldas juurdepÀÀsu riistvararegistritele, millele juurdepÀÀs pidi olema keelatud.
Avaldatud mikrokoodi alusel on vÀlja töötatud avatud CPU z386, mis on realiseeritud SystemVerilog keeles ja töötab FPGA-l. Z386-s on riistvarastruktuurid, mida juhib originaalmikrokood, asemel, et rakendada iga kÀsku eraldi RTL (Register-transfer level) kujul. Valmistatud rakenduse jÔudlus vastab kiirele 386 PC-le (~70MHz). Z386 all suudeti edukalt kÀivitada DOS 6/7, DOS/4GW, DOS/32A ja mÀnge nagu Doom ja Cannon Fodder.
Allikas: opennet.ru
