vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-11-12 09:00 pm

Линукс с системой команд БЭСМ-6

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

Мы имеем мэсм6, то есть реализацию системы команд БЭСМ-6 на Верилоге. А Микрочип имеет PolarFire: микропроцессор RISC-V с Линуксом и FPGA в одном чипе. Платка стоит $132 на microchipdirect.com.
Что если скрестить ежа с ужом? Добавить к имеющимся ядрам RISC-V еще и ядро БЭСМ-6. Благо FPGA вроде немаленького размера (95K логических элементов). Научить Линукс запускать и обслуживать процесс БЭСМ-6. Задействовать имеющийся у нас компилятор Паскаля, и можно будет кодить для БЭСМ-6 под Линуксом!

А если ещё маленько поднапрячься, можно и мониторную систему "Дубна" подтащить. Получим весь спектр языков программирования и ассемблеров. Опыт мы наработали на симуляторе dubna.

Мне кажется, вполне реальная идея.

ircicq: (Default)

[personal profile] ircicq 2024-11-13 05:22 am (UTC)(link)
Это похоже на запуск x86 кода под x64-ядром
Системы команд хоть и родственные, но разные
archaicos: Шарж (Default)

[personal profile] archaicos 2024-11-13 05:49 am (UTC)(link)
Или прикрутить этот эмулятор или впихнуть его в QEMU, а Linux умеет запускать чужие бинарники под QEMU.
Ну, есть варианты. Главное чтоб никто не собрался повторить подвиг и спаять на максимально простых микросхемах. :)
spamsink: (Default)

[personal profile] spamsink 2024-11-13 06:34 am (UTC)(link)
Вообще да, впихнуть эмулятор режима пользователя БЭСМ-6 под QEMU и запускать пакетные задачи как бинарники было бы весело. Вполне себе курсовой проект мог бы быть.
spamsink: (Default)

[personal profile] spamsink 2024-11-13 06:30 am (UTC)(link)
Кодить на Паскале под Линуксом - то ещё удовольствие, как мы недавно имели возможность убедиться.
lxe: (Default)

[personal profile] lxe 2024-11-13 08:01 am (UTC)(link)
А в чем фундаментальная проблема?
ABI разве не должен быть language agnostic? (Если язык не предписывает экзотическое представление данных.)
spamsink: (Default)

[personal profile] spamsink 2024-11-13 08:32 am (UTC)(link)
Фундаментальных проблем нет, но удовольствия никакого. Всё I/O по сравнению с Си делается через пень-колоду.
spamsink: (Default)

[personal profile] spamsink 2024-11-15 09:33 pm (UTC)(link)
Если этот скрипт будет достаточно умён, чтобы по -c создавать стандартные массивы (хоть через *punch, хоть через *to perso во временный файл и выдирание оттуда, чтобы не тратить 2 зоны на каждый объектный модуль), а если они указаны в командной строке - правильно вводить их во временную библиотеку (хоть через перфокарточный формат стандартного массива, хоть через формирование perso во временном файле и *perso), то должно работать. Перфокарточный формат представляется более прямолинейным.