Декомпилятор микрокода К145ИК13

Тема в разделе "WASM.RESEARCH", создана пользователем Intro, 7 авг 2021.

Метки:
  1. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Который использовался для ПМК МК-61 и других подобных ПМК.
    Оптимизация ещё не доделана поэтому много мусора. Но код работает, так же требуется ручная оптимизация. Теперь эмулятор в 100 раз быстрей, можно сделать аппаратный эмулятор на слабом МК.
     

    Вложения:

    Последнее редактирование: 8 авг 2021
  2. Artem_N

    Artem_N Artem N

    Публикаций:
    0
    Регистрация:
    1 мар 2009
    Сообщения:
    74
    Что такое МК-61 - знаю, писал свои программы и игры. Но что такое декомпилятор микрокода для этого процессора?
     
  3. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Artem_N нравится это.
  4. Artem_N

    Artem_N Artem N

    Публикаций:
    0
    Регистрация:
    1 мар 2009
    Сообщения:
    74
    Спасибо, на Храбабре прочитал каменты, всё стало понятно.
    Приятно удивлён, что существует полноценный эмулятор, поддерживающий еггогогию и все прочие фишки. Вроде, Эмулятор 3000 всё это не поддерживал, когда я в последний раз этим интересовался.
     
  5. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Низкоуровневый эмулятор(НЭ) создан давно(10 лет назад), я сейчас пытаюсь высокоуровневый эмулятор(ВЭ) создать. Если НЭ работает с аппаратной частью, микрокод и тп, то ВЭ работает с самой программой и объектами.
    У нас следующие объекты; 3 процессора у которых 256 команд-функций, а так же есть массив регистров R[42], ST[42](это просто стек, точней 14 штук 3-х уровневых стеков), регистры S, S1, флаг переполнения Carry. Есть ещё флаг P нажатой клавишы. И основная кольцевая память, представляет из себя массив-структуру M[15][42], точней M[15][14][3]. Ну и так же есть порты ввода port_a, port_b, и вывода - это 7-ми сегментный 12-ти разрядный индикатор. Интересный факт, в момент работы макроцикла, каждый процессор работает над своим блоком основной памяти, этот факт и позволил создать декомпилятор, т.к. убрал неопределённости. Сейчас надо массивы регистров и основной памяти переделать в структуры, тогда код станет более понятным и лучше оптимизированным.
     
  6. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    И так и этак на все это смотрел и так и не понял нафига нужно сооружать декомпилер для разового разбора прошивк(и/ок) устройства. Там ПЗУ настолько циклопических объемов?
     
  7. Aoizora

    Aoizora Active Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    362
    Это еще какой-то МК-61 боярин, или тот же самый, хоторый ненавидит "хреньворки-страпоны"?
     
  8. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    f13nd, не понятно? Это всё, чтобы понять алгоритм работы ПМК, и чтобы можно было создавать физические эмуляторы на основе самых простых микроконтроллеров, главное чтобы код влез в ПЗУ.
     
  9. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    Я об этом и написал. Делать декомпилер, сворачивающий и оптимизирующий код, отлаживая его в процессе, чтобы понять несколько килобайт кода - странное решение. Чтобы понять, что декомпилер всё обработал корректно, нужно и так хорошо понимать что он обрабатывал. Двойная работа.
     
  10. Artem_N

    Artem_N Artem N

    Публикаций:
    0
    Регистрация:
    1 мар 2009
    Сообщения:
    74
    "Проблема" скорее в том, что в то время никаких компиляторов для ПМК не существовало, ИМХО. И разрабы пилили код чисто на ассемблере, а может быть даже и в чистом хексе. Но это не точно.
    Одно дело декомпелировать асм-сишечку в сичешку, но совсем другое дело декомпелировать асм в высокоуровневый псевдокод. Профит не совсем понятен. Задача интересная, но непонятная.
     
  11. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Проблема в том что К145ИК13 это транспортная триггерная архитектура плюс память акустическая линия задержки. Это сложна в реверси штука, вот декомпилировал код, но там ещё много чего не понятно, очень много мусора который ничего не делает, даже флаг T скорей всего лишний, и его можно удалить при оптимизации, не понятно где точно выводятся символы на экран и тд.
     
  12. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Intro, заинтриговали! И код мне понравился! Самое главное, что он компилируется =)) и там присутствуют элементы парсинга, ну или, возможно, правильнее будет - какого-никакого анализа. Все пытаюсь подтянуть у себя пробелы в этой теме, но как обычно на все времени не хватает )).

    Я правильно понимаю, что занимаясь эмуляцией калькулятора и декомпиляцией его микрокода - вы потихоньку приближаете/приобщаете себя к таким глобальным проектам как: BOCHS, QEMU т.п?

    P.S. Будете смеяться, но хотел вас попросить написать пару строчек для вашего декомпилятора. Ну т.е, что ему скормить, чтобы получить правильный результат на выходе? Там вы и про флаг упоминали. На код самого эмулятора калькулятора тоже было бы любопытно глянуть, не если это не для паблика, то отнесусь с пониманием. Спасибо за интересный тред.
     
  13. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Если внимательно прочитать Трохименко, то он говорит что использовался какой то довольно высокоуровневый ЯП, какой точно непонятно, но точно не использовали непосредственно коды, это сложно даже сумеречных советских программистов.
     
  14. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    149
    GRAFik нравится это.
  15. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    R81..., а вы в этой теме разбираетесь? Это я к тому, что все же знать невозможно. Может вы просто хорошой ссылкой поделились. А то у меня есть вопрос по этой теме. Может вы дадите какой-нибудь дельный совет, а там уж если что, то можно и по вашей ссылке пообщаться с кем-нибудь. Дело в том, что ТС (который Интро) он человек очень умный, серьезный, крутой и с дурачками не общается, а я как раз являюсь ярким представителем дурачка. Ну на этом форуме так уж точно. :)
     
  16. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Хотя вот.
    http://dedusenko.at.ua/blog/kak_pro...mashinnykh_kodakh_zvm_minsk_22/2017-09-24-140
    Может и кодах программировали, жалко что инфа была уничтожена, это важно для истории.

    Возможно надо декомпилировать не в С/С++, а в условный ассемблер, там много функций десятичной коррекций используется и вычитания методом ~A++, в результате код получается не слишком оптимизированным.
     
  17. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Так, ладно, немного переформулирую.

    Вопрос ко всем кто хоть немного в теме. Если изучить код, устройство и работу какого-нибудь эмулятора программируемого калькулятора типа ПМК МК-61. Будет ли это плюсом в изучении таких монстров как QEMU, BOCHS? Ну т.е. как я предполагаю: если сравнивать код эмулятора ПМК МК-61 и того же QEMU, то наверняка же у МК-61 он будет проще, а принцип работы будет один и тот же. И в результате получится как бы постепенное усложнение по принципу - от Hello World к более сложным программам. Или я заблуждаюсь и это будет пустой тратой времени и лучше сразу изучать код BOCHS или QEMU?
     
  18. Aoizora

    Aoizora Active Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    362
    Какую задачу решаешь? Изучать bochs, просто чтобы изучить bochs?
     
  19. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    352
    Вы как будто мысли мои читаете. Да, сначала изучу Бош, просто чтобы изучить Бош. Потом теорию Пуанкаре от Перельмана, просто чтобы изучить теорию Пуанкаре. Ну а там уж и до выращивания клубники на даче рукой подать - просто чтобы выращивать клубнику. Как реверскодер с бывшего кл. У меня же денег валом, как и свободного времени - вот и маюсь от безделья не знаю как убить время. :)

    Ну а если чуть посерьезней, то хочу изучить Бош, ну и желательно, если хватит времени, то и QEMU. Причем хочу на уровне, чтобы можно было делать нужную мне правку кода или вставлять нужные мне участки кода в исходники и работать. Ну как пример: допустим я хочу, чтобы Бош срабатывал на какую-то придуманую мной инструкцию. Чтобы было понятно - вот скажем есть инструкция NOP (90) и Бош на нее реагирует, а я внедряю туда какую-нибудь свою - Бош ее эмулилует, ну обрабатывает точно так же как NOP (90). Ну и естественно нужно делать так чтобы эта инструкция не совпадала с какой-нибудь Интеловской из спецификакации. Вот я и подумал, что может лучше начать с чего-нибудь, что проще, типа MK-61. Попробовать сэмулировать и внедрить там какие-нибудь инструкции, а потом уж переходить на что-то более сложное, типа Боша и QEMU. Я как-то компилировал Бош под свои задачи, потом пытался немного разобраться в исходниках. Но как открыл их - мне сразу плохо стало. :) Я их закрыл, а второй раз уже открывать боюсь. :) Вот отсюда и пришла такая идея начать с чего-нибудь более простого.
     
  20. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Ну эти эмуляторы точно не буду трогать! Их есть кому ковырять, как они приблизительно работают, я представляю. Я вот использую VARCem, 86box для эмуляции старых писюков, мне нравится, а вот некоторые другие эмуляторы работают не так хорошо. Пока только МК-61 буду ковырять, пока не надоест!