vak: (Бодхидхарма)
[personal profile] vak
Эпический момент: Си компилятор для БЭСМ-6 наконец сумел странслировать классический пример Hello World. С украинским колоритом. 😀

Общей вызывалки типа /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
Работает!

Date: 2026-06-09 00:43 (UTC)
b0p0h0k: (OSDispak)
From: [personal profile] b0p0h0k
14, VTM ,-1 только не понял. Это что-то про количество аргументов?

Date: 2026-06-10 14:28 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Работает - это хорошо. А вот
    , UTC ,*STR0
  14, VTM ,0

и
   7, ATX ,
   7, XTA ,

у кодогенератора не удались.