Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
OMinc-версия Ofront (Component Pascal to C Translator) https://zx.oberon.org/forum/viewtopic.php?f=112&t=284 |
Страница 2 из 2 |
Автор: | Дмитрий Дагаев [ 21 май 2018, 09:21 ] |
Заголовок сообщения: | Re: OMinc-версия Ofront (Component Pascal to C Translator) |
Zorko писал(а): А что значит не находит Log? IMPORT Log; symbol file of imported module not found И на вставки сишного кода, которые возможны у ofront, ругается. Код: "OBERON"
|
Автор: | Zorko [ 21 май 2018, 20:46 ] |
Заголовок сообщения: | Re: OMinc-версия Ofront (Component Pascal to C Translator) |
Дмитрий, мы ядро-то ещё толком не собрали со сборщиком мусора. А модуль Log тянет не только его, но и пол-БлэкБокса вместе с оконной графической подсистемой. Консольку возьмите для начала. Можно вот эту (под CPfront не тестировалась!). Вы тут уже успешно ходите по тем граблям CPfront'а, которые я уже зафиксил в Ofront+. Нужно так: Код: "OBERON"
|
Автор: | Zorko [ 21 май 2018, 22:18 ] |
Заголовок сообщения: | Re: OMinc-версия Ofront (Component Pascal to C Translator) |
Я сделал исправление, прошу обновить CPfront. С ним уже транслируется такой код (для форума я заменил тег code в квадратных скобках на {code}): Код: "OBERON"
Но, в основном, всё же в CPfront заложен механизм для описания биндингов, более похожий на тот, который в BlackBox. Вы можете найти на просторах инета файл LinLibc, и CPfront его даже соберёт. Получится символьный файл Lin/SymOF/Libc.osf и возможность вызывать из него процедуры. И этот способ тоже работает. Пробуйте. Код: "OBERON"
Файл "libc.so.6", упоминаемый в сгенеренной Си-программе, видимо, нужно делать самому. |
Автор: | Дмитрий Дагаев [ 22 май 2018, 07:17 ] |
Заголовок сообщения: | Re: OMinc-версия Ofront (Component Pascal to C Translator) |
Понятно. Я просто пробовал вставить свой консольный модуль Log для Ofronta с определенными String как вставка print и проч. Режет глаза немного использование PROCEDURE [code] String для сишной вставки, в DevCompiler [code] вставляет машинные коды. А 64-бита вы пробовали? В vishap работает. |
Автор: | Zorko [ 22 май 2018, 12:03 ] |
Заголовок сообщения: | Re: OMinc-версия Ofront (Component Pascal to C Translator) |
Дмитрий Дагаев писал(а): Режет глаза немного использование PROCEDURE {code} String для сишной вставки Ничего не поделаешь, это реализовано на уровне фронт-энда. CPfront использует ББ-шный фронт-энд.Дмитрий Дагаев писал(а): А 64-бита вы пробовали? В vishap работает. Пробовали. В Ofront+ тоже работает. Есть нативные версии командной строки для 32 и 64 бит Linux и Windows. А в CPfront'е это появится не раньше, чем 64-битная версия ББ. По тем же причинам: внутри ББ есть много привязок к 32-битной разрядности указателей. И CPfront это унаследовал. Я хотел бы в итоге CPfront и Ofront+ слить в один проект, но это процесс долгий и сложный. Как пойдёт. Ну и — если будут какие-то финансовые возможности, это только в плюс.По поводу моего исправления. Суть его в том, что мы с Йозефом ковыряли процедуру DevCPP.GetCode. Убирали лимит на размер кодовых процедур, ещё Йозеф сделал пару фич. И CPfront был несовместим с новой версией GetCode. А после фикса он стал несовместим со сборками типа OberonCore и старыми версиями ББ, где остался старый вариант процедуры. Но проблема ли это? Ведь всегда можно взять свежую сборку. В CPfront кодовые процедуры транслируются в сишные дефайны, так что иметь лимит в 254 байта на длину тела процедуры ещё более бессмысленно, чем в ББ. Вот смотрите, я на этой задаче тестил данный код: https://github.com/Oleg-N-Cher/OfrontPlus/issues/48 Но сейчас Ofront+ фичастее, в том смысле, что умеет объявлять внешние процедуры ещё и с разными моделями вызова. В CPfront так пока нельзя — он не пускает 2 системных флага сразу: Код: "OBERON"
А в Ofront+ можно, только записывается вот так: Код: "OBERON"
Я думаю, нужно уходить от идента callback — он неинформативен, даже сбивает с толку. |
Страница 2 из 2 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |