C-- Sphinx Compiler

...
  • Версия под КолибриОС. Заставить работать откуда угодно пока не получилось(да и слабо представляю, как это сделать), так что кидать сам CMM и С--.INI в папку с исходниками.
    Attachments
    CMM (187.03 KiB)
    Downloaded 390 times
    Last edited by GerdtR on Mon May 30, 2016 9:38 pm, edited 1 time in total.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • По поводу svn... залить-то можно. Чтоб исходники не исчезли. Думаю всё перекомпилить, да залить вместе с бинарниками (или бинарники в форуме пусть лежат? По моему, лучше в свн).
    Чуть не забыл. Правку от 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 334 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Есть ли документация по компилятору ?

    -какие именно возможности спецификации реализованы ($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
  • Siemargl wrote:Есть ли документация по компилятору ?
    Документация есть на сайте http://www.c--sphinx.narod.ru/c--doc.htm
  • 0CodErr wrote:
    Siemargl wrote:Есть ли документация по компилятору ?
    Документация есть на сайте http://www.c--sphinx.narod.ru/c--doc.htm
    Там нет ответов на заданные вопросы.

    Возможно Линси просветит или Гердт разбирался в потрохах компилятора.
  • Siemargl wrote: -какие форматы файлов поддерживаются (ELF, COFF, библиотеки).
    В руководстве
    12. Типы выходных файлов.
    to infinity and beyond
  • В коде самой компиляции я мало ковырялся, скажу только, что форматов много поддерживает(bin,MZ,COFF,PE). ELF'а нет. Просто запусти компилятор без параметров и увидишь это:
    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
    Attachments
    testcoff.c (1.53 KiB)
    Downloaded 228 times
    gcccalls.c (957 Bytes)
    Downloaded 232 times
  • Так, я забыл написать. В Колибри путь указывается через '/', а не через '\' как в Винде, потому мне пришлось поправить код. Теперь параметры указывать только через '-'. Зато в КОС теперь можно указывать абсолютный путь. Кому это надо? Тому, кто решил пихнуть компилятор cmm куда нибудь в /hd1/0/prg, а компилить хочет в любой папке. Да, указывать придётся абсолютный путь. Увы, в КОС текущий каталог устанавливается как /rd/0 и не важно откуда запущена прога. А у прог с newlib текущий каталог ставится как путь, где находится сам кекс, что не многим лучше.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Думаю это вполне можно поправить в разборе командной строки.

    В хелпе и документации указано через слэш, что сбивает.

    Еще кстати я пробежался диффом по исходникам порта - ты зря совсем удалил несколько printf-ов сообщений об ошибках. Лучше вернуть.
  • Who is online

    Users browsing this forum: No registered users and 4 guests