Паскаль-компилятор сошёлся
May. 7th, 2019 06:38 pmПосле исправления последних ошибок, добавления поддержки юникода и имитации нетранзитивного бэсмовского сравнения полноразрядных слов на больше-меньше, объектный модуль, порождаемый сиплюсплюсным компилятором при компиляции паскалевского текста компилятора, в точности ("то есть абсолютно") совпадает с объектным модулем, порождаемым при компиляции паскалевского компилятора самим собой.
Теперь можно начинать развлекаться с тестами.
Теперь можно начинать развлекаться с тестами.
Blinky
Date: 2019-05-08 02:14 am (UTC)Покажите как выглядит этот объектный модуль. После того как будет готов UART и UFM, надо будет сделать конвертер в Intel-HEX.
Сделайте простую программу которая в бесконечном цикле читает содержимое ячейки 0o77755 и пишет это содержимое в 0o77756.
no subject
Date: 2019-05-08 04:27 am (UTC)Вот, нашёл:
https://github.com/besm6/pascal-re/blob/master/format.md
no subject
Date: 2019-05-08 05:30 am (UTC)Первые две проблемы тривиальные:
(1) колонки 73-80 не воспринимаются компилятором;
(2) комментарии фигурными скобками не работают.
Нетривиальная проблема: не распознаются отрицательные константы с плавающей точкой. Вот такая программа нормально работает на Free Pascal и не компилируется у нас:
program test(output); const rscst = -84.22; begin writeln('Real154: ', rscst:15, ' s/b -8.422000e+01'); end.Результат:$ ./pascompl < fconst.pas Pascal-Monitor in C++ (17.05.2019) 00001 1 0 PROGRAM TEST(OUTPUT); 00001 2 1 CONST ******62 Dunno 00001 3 1 RSCST = -84.22; ***** 0 00001 4 2 BEGIN 00002 5 2 WRITELN('REAL154: ', RSCST:15, ' S/B -8.422000E+01'); 00017 6 0 END. ******52 EOF encountered IN 6 LINES 2 ERRORSno subject
Date: 2019-05-08 05:37 am (UTC)PASCAL COMPILER 15.0 (15.02.82) 00001 1 0 PROGRAM TEST(OUTPUT); 00001 2 1 CONST ******62 HET ЦEЛOГO 00001 3 1 RSCST = -84.22; ***** 0 00001 4 2 BEGIN 00002 5 2 WRITELN(’REAL154: ’, RSCST:15, ’ S/B -8.422000E+01’); 00017 6 0 END. IN 6 LINES 1 ERRORSРазве что надо понять, почему С++ раньше добегает до EOF, чем решает завершиться по END-точка.
no subject
Date: 2019-05-08 05:37 am (UTC)Редактируйте по мере возможности.
no subject
Date: 2019-05-08 05:40 am (UTC)no subject
Date: 2019-05-08 05:44 am (UTC)$ ./pascompl < fconst.pas Pascal-Monitor in C++ (17.05.2019) 00001 1 0 PROGRAM TEST(OUTPUT); 00001 2 1 CONST ******62 Dunno 00001 3 1 RSCST = -84.22; ***** 0 00001 4 2 BEGIN 00002 5 2 WRITELN('REAL154: ', RSCST:15, ' S/B -8.422000E+01'); 00006 6 2 END 00017 7 0 .DATA 00017 8 0 END IN 8 LINES 1 ERRORSЗначит константы с плавающей точкой заносим в список нереализованных фичей.no subject
Date: 2019-05-08 05:48 am (UTC)Re: Blinky
Date: 2019-05-08 05:52 am (UTC)Программа на Паскале будет выглядеть так:
program test(output); var src, dst:@integer; begin src := ptr(77755B); dst := ptr(77756B); repeat dst@ := src@ until false; end.no subject
Date: 2019-05-08 05:53 am (UTC)no subject
Date: 2019-05-08 05:54 am (UTC)no subject
Date: 2019-05-08 05:57 am (UTC)Распаковку пробелов я уже задавил.
no subject
Date: 2019-05-08 06:58 am (UTC)Попробуй, результат совпадает?
no subject
Date: 2019-05-08 07:18 am (UTC)