Для энтузиастов бэсмостроения: разработан Си компилятор, порождающий код для БЭСМ-6. Входной язык соответствует стандарту Си11. Порождаемый ассемблерный код может быть в трёх форматах: Madlen, БЕМШ или Unix. В состав компилятора входит рантайм библиотека для беззнаковой арифметики, указателей и прочего.
Проект находится на Гитхабе:
besm6/c-compilerК примеру, возьмём классический Hello World, слегка адаптированный к мониторной системе Дубна:
$ cat hello.c
extern int printf(const char *fmt, ...);
void program()
{
printf("Приветик!\n");
}Превратим его в Мадлен:
$ b6cc -Smadlen hello.c
$ cat hello.madlen
c
program: ,name,
b/ret: ,subp,
,its, 13
,call, b/save0
14 ,vtm, *str0
,ita, 14
,aox, =:64
14 ,vtm, -1
,call, printf
,uj, b/ret
*str0: ,log, 3405015120442524
,log, 3224544102400000
,end,Листинг запуска посредством dubna смотрите в приложенном файле hello.lst.
А вот тот же пример, скомпилированный в БЕМШ:
$ b6cc -Sbemsh hello.c
$ cat hello.bemsh
ввд$$$
*
progra старт 1
_save0 внешн ._save0
printf внешн .printf
_ret внешн ._ret
счим 13
пв _save0(13)
уиа _str0(14)
счи 14
или =в'6400000000000000'
уиа -1(14)
пв printf(13)
пб _ret
_str0 конд в'3405015120442524'
конд в'3224544102400000'
финиш
квч$$$
трн$$$
0-0
блмак
бтмалф
кнц$$$Имеется коллекция документации.
Про машину БЭСМ-6:
Про компилятор:
Про рантайм библиотеку Cи:
Этот Си компилятор был успешно применён для переноса Unix v7 на БЭСМ-6. Но про него я напишу отдельно.
С уважением
--Сергей Вакуленко