Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Актуализировать профили C++/SR и SimRef в соответствии с актуальной версией Рефала-5λ #9

Open
Mazdaywik opened this issue Mar 27, 2017 · 1 comment
Assignees

Comments

@Mazdaywik
Copy link
Owner

Mazdaywik commented Mar 27, 2017

Эта задача никогда не закроется. Вернее, будет существовать, пока существуют Простой Рефал (Рефал-5λ) и указанные профили в компиляторе Модульного Рефала. Либо может закрываться-открываться-закрываться-открываться…

Задача создана для возможности ссылок на неё из других подзадач и в комментариях коммитов.

На момент создания задачи актуальной является интеграция с версией 1.λ.7.

@Mazdaywik Mazdaywik self-assigned this Mar 27, 2017
Mazdaywik added a commit that referenced this issue Mar 11, 2018
Профиль Простого Рефала не работает, т.к. есть ошибка в Рефале-5λ
Mazdaywik added a commit that referenced this issue Apr 25, 2019
Поскольку теперь код прямой кодогенерации должен знать о таблицах
внешних функций и идентификаторов в RASL’е, пришлось создать новый
модуль BE-CppSR::MFunctionsAndIdents, выполняющий генерацию
этих двух таблиц для .rasl’а и .cpp. Функция Extract этого модуля
вызывается дважды при генерации обоих файлов для одного и того же
t.hIModule — так обеспечивается согласованность данных (ценой лишних
вычислений).

Поскольку генерация кода в BE-CppSR::MCompiler выполняется через
MPredeclGenerator, пришлось сделать костыль. А именно, генерировать
обе таблицы в GenCommonHeader. А для этого пришлось сами таблицы
положить в t.FnProperties. Возможно, это снизило быстродействие,
но это не важно. Нужно будет в дальнейшем вообще переработать
BE-CppSR::MCompiler, удалив из него MPredeclGenerator.
@Mazdaywik Mazdaywik changed the title Актуализировать профили C++/SR и SimRef в соответствии с актуальной версией Простого Рефала Актуализировать профили C++/SR и SimRef в соответствии с актуальной версией Рефала-5λ Apr 27, 2020
@Mazdaywik
Copy link
Owner Author

Mazdaywik commented Apr 27, 2020

Мысль по реорганизации обоих профилей

Вместо того, чтобы имитировать компоновку Рефала-5λ предлагается просто вызывать srefc/rlc вместо имеющегося вызова srefc-core. Это существенно упростит и код компилятора, и его поддержку.

Да и профиль C++/SR можно научить генерировать вместо .cpp-файлов .sref-файлы, где все функции объявлены как нативные вставки. Это также упростит генерацию кода. Но делать это не надо, но иметь ввиду как вариант надо.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant