Напишем /bin/cat на Би
2025-04-14 18:06![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Простая программа: копирует входные байты на выход.
Пропускаем через Би компилятор, получаем ассемблерный код.main() {
auto ch;
while (ch = read()) {
write(ch);
}
}
Компилируем в бинарник для БЭСМ-6. Линкуем с рантайм библиотекой Би.$ bbesm < cat.b > cat.madlen
$ cat cat.madlen
main:8,name,
program:,entry,
main:,bss,
b/save0:,subp,
b/ret:,subp,
,its,13
,call,b/save0
15,utm,1
/0:,bss,
7,utc,0
14,vtm,
,ita,14
read:,subp,
14,vtm,read
,its,14
,ati,14
14,utc,
13,vjm,
15,wtc,
,atx,
,uza,/1
write:,subp,
14,vtm,write
,ita,14
7,utc,0
14,vtm,
,its,14
,ati,14
14,xta,
14,vtm,-1
15,wtc,
13,vjm,
,uj,/0
/1:,bss,
,uj, b/ret
,end,
Запустим и подадим на вход собственный исходный код:$ besmc cat.madlen libb.obj
Всё перекодировалось в КОИ-7 по ходу. Это специфика мониторной системы Дубна, никуда не денешься. Ведь мы используем её механизм формирования входного потока программы.$ ./cat.exe < cat.b
MAIN() [
AUTO CH;
WHILE (CH = READ()) [
WRITE(CH);
]
]