Ентузіасти змогли успішно витягти та дизасемблювати мікрокод процесора Intel 80386, який через відсутність документації вважався «чорною скринькою». Бінарний образ мікрокоду був відтворений із залученням AI за фотографіями кристала у високій роздільній здатності, а логіка роботи розібрана через трасування сполук на кристалі. Поступово було визначено структуру мікрокоманд (μ-ops), поля, порядок виконання та маркери кінця інструкцій. Напрацювання проекту опубліковано на GitHub як суспільне надбання.

Виявлено, що у CPU 80386 кожна інструкція повністю виконується через мікрокод, тоді як у 8086 та сучасних процесорах частина інструкцій обробляється безпосередньо. Крім того, на відміну від процесорів 8086, 80386 мікрокод не реалізує алгоритми безпосередньо, а в основному налаштовує апаратні прискорювачі (помножувач, дільник, швидкий зсув, PTU (Protection Test Unit)).
У ході дослідження також була виявлена можлива проблема з безпекою при обробці бітової картки прав доступу до вводу/виводу (IO permission bitmap): при 4-байтовому зверненні до портів перевірялися біти прав доступу тільки для перших 3 байтів, а доступ до 4-го байта не перевірявся, що був доступний до теоретически. заборонено.
На основі опублікованого мікрокоду розроблено відкритий CPU z386, реалізований мовою SystemVerilog і працює з використанням FPGA. Замість реалізації кожної інструкції у формі окремого RTL (Register-transfer level) z386 реалізовані апаратні структури, якими керує оригінальний мікрокод. Продуктивність підготовленої реалізації відповідає швидкому 386 ПК (70MHz). Під управлінням z386 вдалося успішно запустити DOS 6/7, DOS/4GW, DOS/32A та ігри, такі як Doom та Cannon Fodder.
Джерело: opennet.ru
