PDA

Просмотр полной версии : Конвертер кода УКНЦ



andrews
16.04.2020, 20:32
А есть возможность из исходников на asm-е PDP11 получить код ассемблера для 8086(или 80386)? А вызовы процедур графического контроллера УКНЦ подменить вызовами SDL или OpenGL? И тогда соорудить IDE для Vilnus Basic-а без запуска эмулятора. Готовый же Basic- код уже запускать в эмуляторе УКНЦ.

Oleg N. Cher
18.04.2020, 23:06
Я так понял посыл, чтобы полуавтоматически, а в идеале - автоматически получить из PDP11-шной игры нормальную игру под Windows. Но это действительно дас ист фантастиш. Такого инструмента и приблизительно нет, иначе зачем бы Никита Зимин порты свои портировал вручную. Фантастиш. Давайте спускаемся на землю, чего там.

- - - Добавлено - - -

Не, я не спорю, если в игру для Windows сразу вшить эмуль БК, тогда да. Но так как в посте - так нет. И никогда :> Это сопоставимо с изобретением умного и доброго ИИ, который заменит всех программистов, уберя их из профессии.

Oleg N. Cher
19.04.2020, 00:47
Ну а разве железо PDP-11 и железо, на котором может работать винда, сильно похожее?

P.S. Да, вообще не понял про Вильнюс-Бейсик. Игры на для PDP на Бейсике? Проги? Под Windows на SDL? А зачем это?

andrews
19.04.2020, 01:01
Я вообще не вижу проблемы, кроме большого труда и большого объема кода. Если нет черных ящиков и про железо Intel и DEC все известно и про надстройки над этим железом в виде драйверов, операционок, e.t.c. И теоретически нет неразрешимости, потому как и одно полностью алгоритмизовано и другое. А если есть один алгоритм и другой алгоритм, то существует и третий алгоритм, который приводит их между собой в соответствие.

Что мы видим сейчас? Есть некий код исполняемый для DEC, для конкретного железа с надстройками. Можно его разобрать по частям( что просто процессор и память, где к железу обращение),словом как конкретно он исполняется? Можно. Все это описать в промежуточном языке можно?

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

Естественно в идеале любой код PDP программе-конвертеру "скармливается", а она выдает код для Intel.
Может выдавать разные варианты кода ( под SDL или прочее). Почему Vilnus Basic? Потому что это простейший вариант конвертации. Просто Vilnus Basic на Intel никто не портировал. Хотите - портировать его вручную, портируйте. А заодно составляйте алгоритм, как вы это делайте и записывайте его в виде программы :)

Я не говорю, что обратное преобразование не нужно и оно менее интересно. Но здесь не все просто скорее всего сконвертируется, если сконвертируется вообще. Так как у PDP ресурсов меньше, чем у последних навороченных интелов. Это как в математике символьной. Дифференцируется почти любая гладкая функция, а интегрируется не любая! И куча в природе таких вещей: что в одну сторону легко, а обратно тяжело или никак.

"Вшивать эмуль"? Ну это как-то монструозно. Это как интерпретатор Бейсика вместо компилятора хотя бы в пи-код.

andrews
19.04.2020, 01:15
УК-НЦ одно из конкретных реализаций PDP-11 машины( по архитектуре) с весьма интересным и специфическим графическим расширителем. Хотите взять любую другую более простую реализацию? Я не против. Для конвертера все-равно. Железо конвертируемого кода надо как-то описывать в отдельном файле. Сделать, чтобы программа сама по коду на входе определяла, для какого железа этот, код просто сложнее. Естественно надо, чтобы портировала произвольный машинный код.

andrews
19.04.2020, 02:42
- - - Добавлено - - -



что есть конвертер? конвертер чего? конкретно!

Для файла с ассемблерным текстом PDP11+ файл с описанием железа и графич. системы в файл с ассемблерным текстом для 80386, привязанным к какому-то конкретному ассмеблеру и графической системе. Тогда следующим шагом можно получить exe файл готовыми инстр. средствами( тот самый ассемблер +.dll)

А если имплементируем в конвертер эмулятор как вирус в клетку, то он себя никак проявлять не должен! То есть на выходе получаю exe-ник с "вшитым в него" эмулятором.
Вопрос только, что у меня тогда может быть на входе? Текст для макроассемблера, а для Vilnus Basic-а?

Если речь идет о графическом приложении( в том числе игрушке) такая схема понятна. Тут типо и демонстрация и может быть даже отладка. Как быть при работе получаемого на выходе приложения с файлами? Образ диска с файловой системой PDP?
Кажется это гораздо более сложная программа.

Oleg N. Cher
19.04.2020, 03:06
Ну что же, попадался и рекомпилятор MSX в DOS, так что наверно всё это ограниченно реализуемо, но непонятно кто будет всем этим заниматься.

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

hobot
19.04.2020, 03:28
Конвертер кода УКНЦ
не я так не играю...меня тут не было...

andrews
19.04.2020, 10:31
Да я же никого и не запрягаю. Просто для старта прозондировать почву. Буду сам делать.

Hunta
19.04.2020, 10:44
Я вообще не вижу проблемы, кроме большого труда и большого объема кода.
Ну так вперед, в чём проблемы?