LINUX.ORG.RU

Энтузиасты дизассемблировали микрокод i386 и создали открытый CPU z386

 , , , z386,

Энтузиасты дизассемблировали микрокод i386 и создали открытый CPU z386

6

7

Энтузиасты смогли успешно извлечь и дизассемблировать микрокод процессора 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 (wikipedia.org) (Register-transfer level) в z386 реализованы аппаратные структуры, которыми управляет оригинальный микрокод. Производительность подготовленной реализации соответствует быстрому 386 ПК (~70MHz). Под управлением z386 удалось успешно запустить DOS 6/7, DOS/4GW, DOS/32A и игры, такие как Doom и Cannon Fodder.

>>> Подробности на opennet

★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от lenin386

в xt можно воткнуть контроллер со своим bios с поддержкой 1.2/1.44
на штатных конроллерах завести тоже можно, но не всегда
драйвер был даже в комплекте дос, либо сторонние 800.com/pu1700

про dma - на оригинальных ибм пц все линии были разведены, иначе бы они просто не работали даже со своими 360
а вот упомянутый поиск - другое, его шина собстно и не полноценная иса, дма там вообще нет
читать диски хд он действительно не мог осилить

madcore ★★★★★
()

совки украли и скопировали 386 на интеграле в виде микросхемы КА1843ВМ1 ещё в 1987 году. Если отставшая советская промышленность с доярками у кульманов и колхозниками у власти его скопировала, в чём была проблема у современных реверсеров?

sbu_shpigun ★★
()
Ответ на: комментарий от drfaust

Знаменитая борландовская TurboVision - мусор, на котором имитировали программирование только измученные советским образованием русские пионэры. Никто иной в здравом уме продукцию Багланда не использовал никогда. Графику Турбо Вижон не поддерживал, и никто никогда не писал графические приложения на сих творениях. Игорь под DOS писался на Ваткоме. Там просто ставишь таргет DOS 32 bit extender, и всё. Всё прозрачно. Ни о каких himem.sys и пр. ты не заботишься. Что касается графики - ходили некоторые библиотеки, названиями примерно SVGALIB.LALA. Не смотря на названия, SVGA они не использовали, это медленно. И не потому, что BIOS, а потому, что SVGA в принципе херовая идея, с защищённым режимом, вообще-то, не совместимая. В этих библиотеках лежали драйверы к видеокартам, знающие много видеоадаптеров того времени, история примерно такая, как со звуком.

lenin386 ★★★★★
()
Последнее исправление: lenin386 (всего исправлений: 3)
Ответ на: комментарий от sbu_shpigun

КА1843ВМ1 - это сопроцессор. 32 бита для плавающей запятой - мало. У Интела было 80.

lenin386 ★★★★★
()
Ответ на: комментарий от sbu_shpigun

это послойная копия Am29C325, вообще из другой области

madcore ★★★★★
()
Ответ на: комментарий от luke

ну и он говорит, что сегменты также могут использоваться для каких-то слабо сформулированных задач
в реальности толку от них ноль, только в очень специфических системах можно найти какое-то применение

madcore ★★★★★
()
Ответ на: комментарий от lenin386

Игорь под DOS писался на Ваткоме. Там просто ставишь таргет DOS 32 bit extender, и всё. Всё прозрачно.

О... Привет DOS4GW и «кул хакеры» которые расширитель писали, используя чтение и запись в порты, ведь DOS4GW нормальные программеры должны были реализовывать исключительно через BIOS и DOS - или ты забыл про свои же слова?

Знаменитая борландовская TurboVision

Приведи в пример «не мусор» для текстового интерфейса в середине 90х...

Графику Турбо Вижон не поддерживал

Само собой, ведь это текстовый интерфейс, для графики у борланда был реально убогий BGI, но я его и не упоминал. С графикой через БИОС реально тоскливо по скорости, даже БИОСовская (чуть ли не написал бесовская) VESA v.2 тормозит дико, как ты не крутись (я реально по ней заморачивался, ибо было тоскливо на низком уровне работать напрямую с VGA/SVGA в высоких разрешениях, но в те времена полноценный, со всеми либами, ватком я найти не смог, нашёл его уже в начале 2000х, когда он нафиг не нужен был).

drfaust ★★★★★
()
Ответ на: комментарий от Fatalist

Если речь про M4,M5 - декодер из-за фиксированной длины инструкции сильно проще.
Если про Intel, то ещё не сделали, и кто его знает, что там будет. Там же не только сам декодер в этом фестивале участвует, там и «пред»-декодер есть, который длины инструкций и теги расставляет.

GAMer ★★★★★
()
Ответ на: комментарий от GAMer

от мечты в виде x86s ынтел пришлось отказаться, им ещё долго придётся и дальше сношаться с трупом стюардессы

madcore ★★★★★
()
Ответ на: комментарий от madcore

Могут, для компантментализации. Было бы желание использовать.

luke ★★★★★
()
Ответ на: комментарий от cobold

А почему ты хочешь защищать именно буферы, а не переменные в целом?

Потому что переполниться и вылезти за отведенную область памяти может только то, к чему доступ по индексу. В обычную числовую переменную что ни записывай - за отведенное место она не вылезет.

От повреждения кода вроде как придумана защита давно - снимаешь со страницы бит записи и всё

Не поможет в случае если в какой-нибудь массив записали специально подготовленные байты и передали туда управление. Тут надо страницу с данными делать неисполняемой. И судя по количеству таких эксплойтов - этого примерно никто не делает. И ОС по умолчанию тоже не делает. И допускает передачу управления в произвольное место в пределах всего адресного пространства процесса.

watchcat382 ★★
()
Ответ на: комментарий от firkax

Спецификация его электрического внешнего интерфейса тоже есть (она нужна производителям материнок).

Есть подозрение что спецификация электрического интерфейса если и давалась кому-то то под NDA. Недавно читал (по ссылке с ЛОРа кстати) про человека, делавшего самодельный ноутбук. Так вот он сделал его на какой-то китайской планшетной SoC именно потому что не нашел информацию, достаточную для того чтобы запустить хоть какой-нибудь интеловский проц на своей плате. Вроде поиски он аж с третьего пентиума начинал.

спецификации его внутреннего устройства не было

Она не нужна ни железячникам ни тем более программистам. Нужна она только процессоростроителям. А людей, способных договориться с какой-нибудь фабрикой чтобы сделать собственный сложный чип - в мире весьма мало.

watchcat382 ★★
()
Ответ на: комментарий от firkax

Видел в интернете наработки людей, подключавших старые чипы от ISA-видеокарт к современным микроконтроллерам. Там тоже была нужна трассировка последовательности инициализации. Раскопали Trident и еще какую-то. Не так-то это и просто - именно потому что последовательность длинная и использует в числе прочих не описанные в доступной документации биты в регистрах.

watchcat382 ★★
()
Ответ на: комментарий от lenin386

Никто не пейсал ни в какие п0рты, и не двигал никакие галовки

Отучаемся говорить за всех. Я лично писал и двигал - делал таким образом привязку программы к специальным образом отформатированной дискете, на которой были «лишние» секторы. Понятно что если просто переписать эту дискету стандартными средствами то эти секторы не копировались и программа не работала. Боролся таким образом с слишком предприимчивыми кооператорами, которые сами никакого софта не писали потому что не умели, зато бодро торговали чужим, причем даже тем который сами авторы раздавали бесплатно.

watchcat382 ★★
()
Ответ на: комментарий от lenin386

на 286-й машине должен быть контроллер HD floppy и IDE HDD.

И дисководы бывали и 360К и 1.2М (иногда оба сразу и на то тоже причина была в плохой их совместимости), и MFM диски бывали(довольно часто кстати), и SCSI, еще иногда совсем редкость встречалась - ESDI. Что смогли привезти, чаще всего «левым» образом - то потом сборщики и ставили.

watchcat382 ★★
()
Ответ на: комментарий от VIT

Надеюсь, что такой контроль никак не сказывается на производительности.

Для большинства задач, встречающихся у обычных юзеров, производительность процов уже не меньше десятка лет (а то и больше) как избыточна. А вот надежности вычислений как раз и не хватает. Так что пожертвовать некоторой долей производительности в пользу надежности - совершенно нормально.

watchcat382 ★★
()
Ответ на: комментарий от VIT

Их бы энергию

Выцарапать научно-техническую информацию из загребущих лап корпоратов и сделать доступной человечеству - вполне достойная цель.

watchcat382 ★★
()
Ответ на: комментарий от lenin386

В чём собственно проблема мусора?

Если конкретно электронного - то расходование всяких редких химических элементов которых на планете вообще не много. Из электроники, зарытой на свалке с обычным бытовым мусором, их уже практически невозможно вытащить, они там в слишком маленькой концентрации. А дефицитом уже становится даже обычная медь.

Вот например у меня есть и 286 и 386 и 486 и пентиумы разные в виде полностью рабочих исправных системных плат и даже целых компов. Лежат на чердаке ибо я не могу придумать им хоть какое-то полезное применение. Туда же - полностью исправные жеские диски малых объемов - от сотен десятков мегабайтов до единиц гигабайт. Имело ли смысл делать их с таким высоким уровнем надежности что они по 20-30 лет прожили? Уверен что такой уровень надежности серьезно отражался на цене в сторону ее увеличения.

Или еще пример - кинескопы советских цветных телевизоров выгорали за несколько лет, после чего обычно телик менялся на новую более продвинутую модель. Кстати, например в Питере в конце 80х старый телик можно было официально сдать на утилизацию. А кинескопы нескольких лежащих на том же моем чердаке компьютерных мониторов имеют такие же яркие цвета по сей день, через лет 25-30 после выпуска и после эдак десятка лет активной ежедневной эксплуатации там откуда я их забирал списанные. Нужна ли такая надежность? Ведь это дополнительные деньги.

watchcat382 ★★
()
Ответ на: комментарий от madcore

учитывая что raw память быстрее упала в цене чем транзисторы в цпу ( ибо память регулярней чем логика) нет проблемы завалить лишней памятью (типо все буферы апаратно разные пулы с гранулами кратные с какимто-шагом-степени двойке и упрощать апаратный менеджмент защищёных обьектов - т.е опятже нет не обходимости до транзистора соблюдать с обоих сторон логические требования модели - важно что бы на сопостовимых скоростях были бы срабатывания защит исполнения)

объективно нынешнии решения имеют много преимуществ - в частности общий взаимный доступ для нуждающихся в этом служб партнёров

так же будь обще распространёная апаратная защита объектов код писали бы ёще более низкокачественно - ибо если чё железка защитит :)

qulinxao3 ★☆
()
Ответ на: комментарий от watchcat382

Уже через пол-года от этой идеи отказались потому что всякие серьезные (и денежные) заказчики объяснили Интелу что он не прав.

не обязательно денежные - скорее убедительные

выглядит что им нужная примочка сохранённая в сверхмассовом исполнении конкретно её пользователям обходится за счёт всего(т.е остальных покупателей) рынка дешевле

qulinxao3 ★☆
()
Ответ на: комментарий от Fatalist

сори не микроархитектор

ответ вроде как в большей степени интеграции как железа (ниже издержки на интерфейсах подсистем) так и софта(линейка эплов более гомогенна как следствие меньше люфта)

qulinxao3 ★☆
()
Ответ на: комментарий от watchcat382

но это вроде закончилось утилитой 800 (блин али 800к) т.е. как временная магия привязка к более низкому уровню чем доступный очередным «скрипт-киди» инструментарий это конечно спасает на время периода «прогреса» опускания инструментов до очередных хапуг

qulinxao3 ★☆
()
Ответ на: комментарий от VIT

Интел столкнулась с эффективным менеджером,

прям средневековое самозарождение жизни из грязных тряпок

qulinxao3 ★☆
()
Ответ на: комментарий от watchcat382

И ОС по умолчанию тоже не делает

Windows делает: https://learn.microsoft.com/ru-ru/windows/win32/memory/data-execution-prevention

В linux проблема совместимости. Если так сделать, для всех JIT надо менять malloc на mmap, иначе работать перестанут.

Проще заставить всех вместо malloc использовать mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_ANONYMOUS, -1, 0) если необходима безопасность.

monk ★★★★★
()
Ответ на: комментарий от luke

В ARMv9 THUMB'а нету. Только 32бит инструкции.

GAMer ★★★★★
()
Ответ на: комментарий от watchcat382

Нужна ли такая надежность? Ведь это дополнительные деньги.

Эта «надёжность» скорее всего просто следствие грубой технологии.

GAMer ★★★★★
()
Ответ на: комментарий от watchcat382

Боролся таким образом с слишком предприимчивыми кооператорами

Которые боролись с хитрожопым форматом с помощью fdr )

GAMer ★★★★★
()
Ответ на: комментарий от watchcat382

Если мужчины не умели копировать диски теледиском, что даже проще и быстрее, защититься от их деятельности можно было простым скрытым файлом, без всяких портов. Не копируемая защита дискет возможна только физической порчей дискеты (и головок).

lenin386 ★★★★★
()
Ответ на: комментарий от lenin386

Есть сайт компьютерного музея, я там видел фото поиск-2 на 286 процессоре.Но процессор не отечественный а NEC какая то модефикация.И это уже время развала завода по сути дела полусамопал.Самое главное отыскалась плата - но по слухам этого самопала выпустили меньше ста штук .

maximnik0 ★★
()
Ответ на: комментарий от maximnik0

А я видел архиерея Павла и святую деву Марфу. Пруфы где твоих видений? Пруфы. Никакая плата не отыскалась - это схемы Поиска-2 на 8086. Против которого, собственно, никто не возражает. Супер редкая вещь, но существовала. Если ты думаешь, что в эту плату так просто установить контрафактный 286-й - нет.

lenin386 ★★★★★
()
Последнее исправление: lenin386 (всего исправлений: 4)
Ответ на: комментарий от lenin386

Не копируемая защита дискет возможна только физической порчей дискеты (и головок).

Можно в принципе создавать нестабильно читающиеся сектора, и определять оригинал по ним.

GAMer ★★★★★
()
Ответ на: комментарий от GAMer

Теледиск копирует симуляцию плохих секторов. Только физическая порча не копируется. Тут всё просто. Что было записано - будет прочитано командой «чтение дорожки».

lenin386 ★★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от watchcat382

Надеюсь понятно что я как частное лицо выберу

Именно! Я так и выбирал, когда встал вопрос, «к кому уходить» от Micrichip: CH32* вместо «Амура»...

Somebody ★★★★
()
Ответ на: комментарий от lenin386

Чтобы показать, как ты крут?

И это тоже. Продемонстрировав такие умения можно было например на работу с хорошей зарплатой и крутыми компами устроиться.

нормальный способ переключить режим видеокарты - Vesa и VGA BIOS

Работает только пока вам не потребуется нестандартный видеорежим.

пейсание в порты отлетит на другой видеокарте

Во времена ДОС сильная зависимость софта от железа была обычным явлением. Нередко программы поставлялись с файлами «драйверов» под несколько распространенных тогда видеокарт и в настройках программы это переключалось.

watchcat382 ★★
()
Ответ на: комментарий от watchcat382

Или еще пример - кинескопы советских цветных телевизоров выгорали за несколько лет, после чего обычно телик менялся на новую более продвинутую модель. Кстати, например в Питере в конце 80х старый телик можно было официально сдать на утилизацию. А кинескопы нескольких лежащих на том же моем чердаке компьютерных мониторов имеют такие же яркие цвета по сей день, через лет 25-30 после выпуска и после эдак десятка лет активной ежедневной эксплуатации там откуда я их забирал списанные.

Нужна ли такая надежность? Ведь это дополнительные деньги.

Иногда очень пригождается... ;)))

К слову: спасибо огромное японцам и высочайшей надёжности кинескопов их телевизоров, благодаря которой мне удавалось кормить семью в 1990-х, переделывая японские телевизоры NTSC, привозимые «морскими» со свалок из Японии, в «годные» в России PAL/SECAM с «картинкой», лучшей, чем у новых отечественных телевизоров!.. :)

Somebody ★★★★
()
Ответ на: комментарий от lenin386

некоторые дисководы позволяли позиционировать голову на 86 дорожек, вместо 80 по стандарту

86 ни разу не видел. 82 было обычно. И да, треск был. А вот записать на дорожку больше секторов чем штатно - это было абсолютно безболезненно для дисковода.

watchcat382 ★★
()
Ответ на: комментарий от lenin386

Сейчас самая проблема - в контроллерах дисковода. На новых платах они давно уже не разводятся, старые ветшают. Через USB проходит только стандартный MS-DOS формат. Но и эта проблема решается.

lenin386 ★★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Дисководов просто дохера.

Но и цена там тоже «дохера»... :))

А мне всего-то старые дискеты бы «разок глянуть»...

Somebody ★★★★
()
Ответ на: комментарий от firkax

Затем, чтобы посмотреть как можно переключить режим без биоса

А я например по заказу своего приятеля писал включалку нестандартного видеорежима чтобы подключить к 286 компу телевизор в качестве монитора. Приятель был игроманом и хотел большой экран. Поэтому моя программа перехватывала int10 и писала в порты видеокарты (trident) нечто своё чтобы получить понимаемую телевизором частоту строк и кадров. Электрическое подключение к схеме телика тоже конечно было своё.

watchcat382 ★★
()
Ответ на: комментарий от watchcat382

~86 - если ограничителя нет. ~82 - если он есть. Его понятно ставили с небольшим запасом, чтобы случайно 80-ю дорожку не заблокирвать. Но это всё кул хакерство, детство в ж-пе. Ты же понимаешь, что таким образом дисковод можно сломать. Запись на дорожку больше секторов - уменьшает межсекторные промежутки. Я замечал, что дискеты на 800 читаются прям сильно хуже, чем на 720.

lenin386 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.