علاقهمندان با موفقیت میکروکد یک پردازنده اینتل ۸۰۳۸۶ را استخراج و جداسازی کردند، که به دلیل کمبود مستندات، یک "جعبه سیاه" در نظر گرفته میشد. یک تصویر دودویی از میکروکد با استفاده از هوش مصنوعی از عکسهای با وضوح بالا از تراشه بازسازی شد و منطق آن با استفاده از سیمکشی روی تراشه رمزگشایی شد. ساختار میکروآپس، فیلدها، ترتیب اجرا و نشانگرهای پایان دستورالعمل به تدریج تعیین شدند. یافتههای این پروژه به عنوان مالکیت عمومی در گیتهاب منتشر شده است.

کشف شد که در پردازنده ۸۰۳۸۶، هر دستورالعمل کاملاً از طریق ریزکد اجرا میشود، در حالی که در پردازندههای ۸۰۸۶ و پردازندههای مدرن، برخی از دستورالعملها مستقیماً پردازش میشوند. علاوه بر این، برخلاف پردازندههای ۸۰۸۶، ریزکد در ۸۰۳۸۶ مستقیماً الگوریتمها را پیادهسازی نمیکند، بلکه در درجه اول شتابدهندههای سختافزاری (ضربکننده، تقسیمکننده، شیفتدهنده سریع، PTU (واحد تست حفاظت)) را پیکربندی میکند.
این مطالعه همچنین یک مشکل امنیتی بالقوه را در مدیریت بیتمپ مجوز IO کشف کرد: هنگام دسترسی به پورتهای ۴ بایتی، فقط بیتهای مجوز برای ۳ بایت اول بررسی میشدند و دسترسی به بایت چهارم بررسی نمیشد، که از لحاظ تئوری امکان دسترسی به رجیسترهای سختافزاری را که نباید در دسترس باشند، فراهم میکرد.
بر اساس میکروکد منتشر شده، یک پردازندهی متنباز z386 توسعه داده شد که در SystemVerilog پیادهسازی شده و روی یک FPGA اجرا میشود. به جای پیادهسازی هر دستورالعمل به عنوان یک RTL (لایه انتقال ثبات) جداگانه، z386 ساختارهای سختافزاری را که توسط میکروکد اصلی کنترل میشوند، پیادهسازی میکند. عملکرد پیادهسازی حاصل با یک کامپیوتر سریع 386 (حدود 70 مگاهرتز) مطابقت دارد. z386 با موفقیت DOS 6/7، DOS/4GW، DOS/32A و بازیهایی مانند Doom و Cannon Fodder را اجرا کرد.
منبع: opennet.ru
