Какая внезапная тема. Даже и не ожидал, что до этого момента доживу. Сам в своё время писал Шекеру про исходники.
Друзья, а это чудо будет перекочевывать в svn?
C-- Sphinx Compiler
Версия под КолибриОС. Заставить работать откуда угодно пока не получилось(да и слабо представляю, как это сделать), так что кидать сам CMM и С--.INI в папку с исходниками.
По поводу svn... залить-то можно. Чтоб исходники не исчезли. Думаю всё перекомпилить, да залить вместе с бинарниками (или бинарники в форуме пусть лежат? По моему, лучше в свн).
Чуть не забыл. Правку от lev я добавил, так что ему отдельное спасибо.
Чуть не забыл. Правку от lev я добавил, так что ему отдельное спасибо.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Всё, на svn:/kolibrios.org/programs/develop/cmm теперь лежат исходники. Бинарники пока заливать не буду, потому как Колибри-версия вообще исходники искать не хочет.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Вот рабочие бинарики под Винду и Колибри. Под Линукс в теории должно компилиться, если в Makefile поправить _WIN_ на _UNIX_. В Колибри файл c--.ini ищется в таком порядке: папка с cmm, указанные пути в ком. строке, /rd/1/settings. Cmm можно запускать откуда угодно, но тогда указывать абсолютный путь до компилируемого файла. Если хотите указывать относительный путь, то cmm класть в папку с исходником.
- Attachments
-
-
c--.zip (463.67 KiB)Downloaded 339 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Есть ли документация по компилятору ?
-какие именно возможности спецификации реализованы ($2.9 спецификации 2.0) ?
-какие форматы файлов поддерживаются (ELF, COFF, библиотеки) ?
-какие фишки поддержки функционального программирования реализованы (also, continuation, cut to, etc) ?
-куда смотреть, что поддержано run-time services ?
Еще я вижу ООП-подобный синтаксис в исходниках еолайта и проч, но сходу не вижу описания такого синтаксиса в спецификации.
-какие именно возможности спецификации реализованы ($2.9 спецификации 2.0) ?
-какие форматы файлов поддерживаются (ELF, COFF, библиотеки) ?
-какие фишки поддержки функционального программирования реализованы (also, continuation, cut to, etc) ?
-куда смотреть, что поддержано run-time services ?
Еще я вижу ООП-подобный синтаксис в исходниках еолайта и проч, но сходу не вижу описания такого синтаксиса в спецификации.
Siemargl wrote:Есть ли документация по компилятору ?
viewtopic.php?f=33&t=495&start=15#p21350
Обычный подход аля Си с классами, в основе просто применение структур.Siemargl wrote:Еще я вижу ООП-подобный синтаксис в исходниках еолайта и проч, но сходу не вижу описания такого синтаксиса в спецификации.
to infinity and beyond
Документация есть на сайте http://www.c--sphinx.narod.ru/c--doc.htmSiemargl wrote:Есть ли документация по компилятору ?
Там нет ответов на заданные вопросы.0CodErr wrote:Документация есть на сайте http://www.c--sphinx.narod.ru/c--doc.htmSiemargl wrote:Есть ли документация по компилятору ?
Возможно Линси просветит или Гердт разбирался в потрохах компилятора.
В руководствеSiemargl wrote: -какие форматы файлов поддерживаются (ELF, COFF, библиотеки).
12. Типы выходных файлов.
to infinity and beyond
В коде самой компиляции я мало ковырялся, скажу только, что форматов много поддерживает(bin,MZ,COFF,PE). ELF'а нет. Просто запусти компилятор без параметров и увидишь это:
"/TEXE DOS EXE file (model TINY) /D32 EXE file (32bit code for DOS)",
"/EXE DOS EXE file (model SMALL) /W32 EXE for Windows32 GUI",
"/OBJ OBJ output file /W32C EXE for Windows32 console",
"/SOBJ slave OBJ output file /DLL DLL for Windows32",
"/COFF OBJ COFF output file /DBG create debug information",
"/SYM COM file symbiosis /LST create assembly listing",
"/SYS device (SYS) file /B32 32bit binary files",
"/MEOS executable file for MeOS /MAP create function map file"
Spoiler:
OUTPUT FILES","/TEXE DOS EXE file (model TINY) /D32 EXE file (32bit code for DOS)",
"/EXE DOS EXE file (model SMALL) /W32 EXE for Windows32 GUI",
"/OBJ OBJ output file /W32C EXE for Windows32 console",
"/SOBJ slave OBJ output file /DLL DLL for Windows32",
"/COFF OBJ COFF output file /DBG create debug information",
"/SYM COM file symbiosis /LST create assembly listing",
"/SYS device (SYS) file /B32 32bit binary files",
"/MEOS executable file for MeOS /MAP create function map file"
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Вкратце себе же отвечаю:Siemargl wrote:Есть ли документация по компилятору ?
-какие именно возможности спецификации реализованы ($2.9 спецификации 2.0) ?
-какие форматы файлов поддерживаются (ELF, COFF, библиотеки) ?
-какие фишки поддержки функционального программирования реализованы (also, continuation, cut to, etc) ?
-куда смотреть, что поддержано run-time services ?
Еще я вижу ООП-подобный синтаксис в исходниках еолайта и проч, но сходу не вижу описания такого синтаксиса в спецификации.
1. См. документацию на Сфинкс
2. Как входные - никакие, только исходный текст. Как выходные полезные для KOS: PE DLL, MEOS executable. /COFF не работает адекватно - ниже решение
3. Никакие не реализованы.
4. ХЗ, вероятно только в SVN, часть функций (с плав.точкой) встроено в компилятор - описаны в доке.
5. Есть в документации на сфинкс, нестандартное расширение с--
Last edited by Siemargl on Sun Jul 10, 2016 2:09 am, edited 2 times in total.
Компилятор не понимает ключи
>d:\cmm\cmm.exe /COFF dicty.c
SPHINX C-- Compiler Version 0.239 b26 Jun 16 2016
Compiling Commenced . . .
(0)#1> unable to open file '/COFF.h'.
upd. Понимает опции только через минус, например -COFF
(зачем то закомментировано в main.cpp:268)
Для получения coff объектника надо писать -obj -coff -w32
Интероперабельность с gcc проверена, пример приложил
Заодно нашел английскую версию документации
Sphinx C-- documentation http://barryk.org/goosee/cmm/c--doc.htm
>d:\cmm\cmm.exe /COFF dicty.c
SPHINX C-- Compiler Version 0.239 b26 Jun 16 2016
Compiling Commenced . . .
(0)#1> unable to open file '/COFF.h'.
upd. Понимает опции только через минус, например -COFF
(зачем то закомментировано в main.cpp:268)
Для получения coff объектника надо писать -obj -coff -w32
Интероперабельность с gcc проверена, пример приложил
Заодно нашел английскую версию документации
Sphinx C-- documentation http://barryk.org/goosee/cmm/c--doc.htm
- Attachments
-
-
testcoff.c (1.53 KiB)Downloaded 230 times
-
gcccalls.c (957 Bytes)Downloaded 234 times
-
Так, я забыл написать. В Колибри путь указывается через '/', а не через '\' как в Винде, потому мне пришлось поправить код. Теперь параметры указывать только через '-'. Зато в КОС теперь можно указывать абсолютный путь. Кому это надо? Тому, кто решил пихнуть компилятор cmm куда нибудь в /hd1/0/prg, а компилить хочет в любой папке. Да, указывать придётся абсолютный путь. Увы, в КОС текущий каталог устанавливается как /rd/0 и не важно откуда запущена прога. А у прог с newlib текущий каталог ставится как путь, где находится сам кекс, что не многим лучше.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Думаю это вполне можно поправить в разборе командной строки.
В хелпе и документации указано через слэш, что сбивает.
Еще кстати я пробежался диффом по исходникам порта - ты зря совсем удалил несколько printf-ов сообщений об ошибках. Лучше вернуть.
В хелпе и документации указано через слэш, что сбивает.
Еще кстати я пробежался диффом по исходникам порта - ты зря совсем удалил несколько printf-ов сообщений об ошибках. Лучше вернуть.
Who is online
Users browsing this forum: No registered users and 2 guests