Эпический момент: Си компилятор для БЭСМ-6 наконец сумел странслировать классический пример Hello World. С украинским колоритом. 😀
Общей вызывалки типа /usr/bin/cc пока нет, поэтому приходится запускать каждый проход отдельно. Берём исходник на Си и превращаем последовательно в AST, TAC и ассемблер:
Общей вызывалки типа /usr/bin/cc пока нет, поэтому приходится запускать каждый проход отдельно. Берём исходник на Си и превращаем последовательно в AST, TAC и ассемблер:
$ cat varkalo.c
int printf(const char *fmt, ...);
void program()
{
printf("Варкало. Борщуки прузькі\nСверділися в садві\n");
}
$ parse varkalo.c varkalo.ast
$ lower varkalo.ast varkalo.tac
$ genbesm varkalo.tac varkalo.madlenДобавляем нужные управляющие карты мониторной системы Дубна, чтобы задействовать printf из рантайм библиотеки языка Би. Запускаем:Работает!$ dubna varkalo.dub 08 ИЮH 26 11.49 ЙOKCEЛ БЭCM-6/5 ШИФP-12 MOHИTOPHAЯ CИCTEMA ′Д Y Б H A′ - 20/10/88 ЖЖЖЖ Ж Ж Ж Ж Ж ЖЖЖЖ *NAME C *DISC:1/***** *TAPE:7/*,40 *LIBRARY:40 *CALL SETFTN:ONE,LONG,MODUL *ASSEM ABTOKOД MADLEN (1.10.72) *STR0 : , NAME, 0000 2044 0520 , LOG ,2044052022640554 - 2264 0554 0001 2362 7040 , LOG ,2362704030447520 - 3044 7520 0002 3725 4513 , LOG ,3725451332220160 - 3222 0160 0003 2405 4572 , LOG ,2405457236045511 - 3604 5511 0004 0244 1502 , LOG ,244150221250144 - 2125 0144 0005 2226 6151 , LOG ,2226615120670440 - 2067 0440 0006 2042 0103 , LOG ,2042010320262102 - 2026 2102 0007 2220 5000 , LOG ,2220500000000000 - 0000 0000 , END , TAБЛИЦA OПИCAHИЙ: 4000 1263646220000000 ЧИCЛO ПEPФ. 0011 ЧИCЛO OШИБ. OПEPATOPOB 0000 ABTOKOД MADLEN (1.10.72) PROGRAM : , NAME, B/RET : , SUBP, *STR0 : , SUBP, 000000043 0015 , ITS ,13 - 1531 74003 , CALL,B/SAVE0 00011725 00002 15, UTM ,2 - 0022 74002 , UTC ,*STR0 00021624 00000 14, VTM ,0 - 00042 0016 , ITA ,14 000307000 0000 7, ATX , - 07010 0000 7, XTA , 00041624 74004 14, VTM ,-1 - 1531 74005 , CALL,PRINTF 000507000 0001 7, ATX ,1 - 0030 74001 , UJ ,B/RET , END , TAБЛИЦA OПИCAHИЙ: 4000 6062574762415500 0000401163000000 0000401063000000 4003 0000400763000000 0000000040077777 0000400663000000 4006 6062515664460000 4217634166452000 1263646220000000 4011 4217624564000000 ЧИCЛO ПEPФ. 0017 ЧИCЛO OШИБ. OПEPATOPOB 0000 *NO LOAD *EXECUTE BAPKAЛO. БOPЩYKИ ПPYЗЬKI CBEPДIЛИCЯ B CAДBI ------------------------------------------------------------ Elapsed time: 0.021 seconds Simulated: 1815392 instructions Simulation rate: 88040349 instructions/sec

no subject
Date: 2026-06-09 00:43 (UTC)no subject
Date: 2026-06-09 02:38 (UTC)Это дело объясняется здесь: https://github.com/besm6/c-compiler/blob/main/docs/Besm6_Calling_Conventions.md
no subject
Date: 2026-06-10 14:28 (UTC), UTC ,*STR0 14, VTM ,0и
у кодогенератора не удались.
no subject
Date: 2026-06-10 21:07 (UTC)Сначала сделаю машинно-независимые оптимизации, как в учебнике написано.
https://github.com/besm6/c-compiler/blob/main/docs/TAC_Optimization.md