Page 9 of 9

Re: C-- Sphinx Compiler

Posted: Thu Apr 11, 2019 1:02 am
by Leency
Наверное да.

Re: C-- Sphinx Compiler

Posted: Fri Nov 08, 2019 9:50 am
by paulcodeman
Обновление для Ubuntu 18.04, исправил некоторые баги в CMM, перед компиляцией
sudo apt-get install gcc-multilib g++-multilib

Re: C-- Sphinx Compiler

Posted: Thu Nov 14, 2019 10:40 pm
by Leency
paulcodeman
Я залил изменения на SVN и пофиксил ошибки автосборки.

Re: C-- Sphinx Compiler

Posted: Mon Nov 02, 2020 9:52 am
by maxcodehack
Почему на сервере автосборки используется wine+windows cmm, хотя двумя постами выше paulcodeman выкладывал версию для linux? И еще. Та версия что на сервере, генерирует файлы с расширением .com, нужно переименовывать. Из поста paulcodeman cmm сразу в kex собирает, и не надо переименовывать.

Re: C-- Sphinx Compiler

Posted: Mon Nov 02, 2020 2:55 pm
by dunkaist
maxcodehack wrote:Почему на сервере автосборки используется wine+windows cmm, хотя двумя постами выше paulcodeman выкладывал версию для linux?
Because the autobuild was set up long before that post. And it still works. People are usually lazy to fix things that work.
maxcodehack wrote:Та версия что на сервере, генерирует файлы с расширением .com, нужно переименовывать. Из поста paulcodeman cmm сразу в kex собирает, и не надо переименовывать.
There are no .com or .kex files in kolibri images, so one needs to rename them anyway. May be we will use '.kex' suffix after switching to PE but I haven't heard anybody working on it last years.

Re: C-- Sphinx Compiler

Posted: Tue Nov 03, 2020 7:45 pm
by maxcodehack
Попробовал скомпилировать пример window.c прямо из-под колибри.
Запускаю. И компилятор просто ничего не делает. Ни ошибок о падении, ни ошибок о том что файл не найден. Ничего.
Странно

Re: C-- Sphinx Compiler

Posted: Thu Nov 11, 2021 10:41 pm
by rgimad
Привет. Хочу высказать мысль насчет текущего языка и компилятора C - - . В нем много откровенно ненужного функционала, например: досовские таргеты и директивы связанные с ними, процедуры обработки прерываний. По самому языку есть странные вещи. С одной стороны, есть ассемблерные вставки (ключевое слово asm), с другой стороны можно использовать регистры как переменные. Какой смысл в последнем не понятно, ведь по сути это дублирующий функционал. Можно предположить, что использование регистров вручную в качестве переменных даст прирост в скорости, но ведь любой оптимизирующий компилятор сам сможет разместить переменные по регистрам там где это возможно, и программисту не нужно думать об этом. Leency, посмотрев твой код я заметил что ты редко используешь EAX, EBX, ECX и тд в коде. Насколько я понимаю это не очень хорошая практика, как минимум потому что имена становятся неосмысленными. Так что эту фичу можно было бы выпилить. То же касается и if/IF и т.д (нормальный компилятор сам вставит подходящую инструкцию). Кажется, пора принимать стандарт Sphinx C - - 2022

P.S. Собранный под linux компилятор C-- иногда дает ошибки там, где windows билд не дает ошибок. Я как-то отписывал в беседу про такие ситуации, надо поискать.. Кстати, не зря на сервере автобилда используется c - - под вайном.

Re: C-- Sphinx Compiler

Posted: Fri Nov 12, 2021 11:19 am
by Leency
I'm okay за чистку, если сборка текущих программ не поломается. EAX, EBX, ECX используются, по поводу остального согласен.
Лично мне очень не хватает объявления переменных в коде, например for (int i=0; ...)

Re: C-- Sphinx Compiler

Posted: Mon Jan 03, 2022 10:44 am
by Coldy
Привет!
Копаюсь в исходном коде данного компилятора (использовал последний на svn). Я так понимаю - это версия от paulcodeman, которая выложена несколькими постами выше.
У меня возникло для вопроса:
1. Файл struct.h

Code: Select all

typedef struct _OBJECT_ENTRY_
{
	char name[16];
	long vsize;
	long sectionRVA;
	long psize;
	long pOffset;
	unsigned long PointerToRelocations;
	unsigned long PointerToLinenumbers;
	unsigned short NumberOfRelocations;
	unsigned short NumberOfLinenumbers;
	long flags;
}OBJECT_ENTRY;
Чтобы было понятно OBJECT_ENTRY - это авторское название IMAGE_SECTION_HEADER (в трактовке M$). И размер первого поля по спецификации COFF 8 байт. Зачем это увеличено до 16?

2. тот же файл

Code: Select all

struct MEOSheader
{
	unsigned char sign[25];
	unsigned long vers;
	unsigned long start;
	unsigned long size;
	unsigned long alloc_mem;
	unsigned long esp;
	unsigned long I_Param;
	unsigned long I_Icon;
};
Это заголовок приложений Kolibri. И первое поле также должен иметь длину 8 байт. Почему тут 25? И как вообще тогда работают приложения собранные этим компилятором?

Re: C-- Sphinx Compiler

Posted: Mon Jan 03, 2022 4:57 pm
by rgimad
Меня больше беспокоит что у этого языка нет нормальной спецификации, даже грамматика формально не описана. Изучать его возможно только методом тыка.

Re: C-- Sphinx Compiler

Posted: Mon Jan 03, 2022 6:12 pm
by Coldy
rgimad, всегда можно создать диалект языка. Как я понял язык юзает только Leency (поправьте меня если это не так) и он не против корректировок. Главное, сохранить совместимость (это сложно), чтобы не поломались существующие приложения - или нужно будет корректировать их код.

Я же озадачился чтобы с-- выдавал MS COFF (и немного сначал не понял, почему заголовки секций какие-то странные), чтобы скармливать его будущему линкеру KX (в разработке). Тема с заголовком приложений Kolibri - загадка для меня - отдельный шок.

Re: C-- Sphinx Compiler

Posted: Tue Jan 04, 2022 11:31 am
by Siemargl
rgimad wrote:Меня больше беспокоит что у этого языка нет нормальной спецификации, даже грамматика формально не описана. Изучать его возможно только методом тыка.
https://web.archive.org/web/20090703161 ... c--doc.htm

Также есть подкаталог doc
https://github.com/KolibriOS/cminusminu ... master/doc

Re: C-- Sphinx Compiler

Posted: Wed Jan 05, 2022 8:42 pm
by Leency
Coldy

Привет, директиву

Code: Select all

#pragma meos
которая и позволяет юзать этот заголовок в наших(моих) программах не используется. Весь хэдер определен вручную как

Code: Select all

char   os_name[]    = "MENUET01"n;
dword  os_version   = 0x00000001;
dword  start_addr   = ENTRY_POINT;
dword  final_addr   = #______STOP______+32;
dword  alloc_mem    = MEMSIZE;
dword  x86esp_reg   = MEMSIZE;
dword  I_Param      = #param;
dword  I_Path       = #program_path;
char param[4096];
char program_path[4096];
в файле svn/programs/cmm/lib/kolibri.h

Если будет совместимость, то можно фиксить.

Re: C-- Sphinx Compiler

Posted: Thu Jan 06, 2022 11:52 am
by Coldy
Leency, да, я догадался.
К сожалению, вынужден тебя расстроить, с генерацией MS COFF есть проблемы, чтобы это исправить - нужно править код. Но проблема в том, что я не могу собрать этот компилятор в MSVC.

P.S. попробовал написать Михаилу Шекеру, но, похоже, он больше не занимается проектом, т.к. пришел отбойник, что у него переполнен ящик и сообщение не доставлено.

Re: C-- Sphinx Compiler

Posted: Mon Feb 07, 2022 1:13 pm
by Coldy
Привет! Компилятор доработан для полной и корректной генерации MSCOFF, в т.ч. исправлены ошибки.
Для использования нужно задать ключ -coff в командной строке, если вспомогательные связанные с этой опцией ключи не заданы, то на выходе будет obj файл формата MSCOFF.
Также добавлен предопределенный макрос __COFF__ для возможности разделения кода для вышеуказанной сборки. Кроме того, скорректированы мэйкфайлы - добавлена опция для корректной упаковки структур.

Просьба протестировать, в т.ч. работу в используемых вариантах сборки.

P.S.: Все вышеописанное необходимо для дальнейшего перевода приложений cmm на автоимпорт.