C-- Sphinx Compiler

...
  • GerdtR wrote: Увы, в КОС текущий каталог устанавливается как /rd/0 и не важно откуда запущена прога. А у прог с newlib текущий каталог ставится как путь, где находится сам кекс, что не многим лучше.
    Не так. Все приложения в системе наследуют текущий каталог от родительского процесса. Это свойство ядра. Разработчики файловых менеджеров забывают переключать рабочий каталог при навигации по дереву. Поэтому рекомендую пользоваться SHELL.
  • Serge wrote:Поэтому рекомендую пользоваться SHELL.
    Так вроде у Shell тоже "/rd/1". svn6300-img

    Это выводит текущую директорию в BOARD:
    Spoiler:

    Code: Select all

    ORG 0
    BITS 32
    ; ------------------------------------- ;
    STACK_SIZE             equ 256
    ; ------------------------------------- ;
    MENUET01                db 'MENUET01'
    version                 dd 1
    program.start           dd START
    program.end             dd END
    program.memory          dd END + STACK_SIZE
    program.stack           dd END + STACK_SIZE
    program.params          dd 0
    program.path            dd 0
    ; ------------------------------------- ;
    CD_BUFFER_SIZE equ 1024
    cd_buffer times CD_BUFFER_SIZE db 0
    db 0
    ; ------------------------------------- ;
    START:
            mov    eax, 30
            mov    ebx, 2
            mov    ecx, cd_buffer
            mov    edx, CD_BUFFER_SIZE
            int    64
            mov    eax, 63
            mov    ebx, 1
            xor    ecx, ecx
            mov    esi, cd_buffer
    .next:
            mov    cl, [esi]
            jcxz   .done
            int    64
            inc    esi
            jmp    .next
    .done:
            mov    cl, 13
            int    64
            mov    cl, 10
            int    64
            mov    eax, -1
            int    64
    END:
    d_print_cd.kex (1.1 KiB)
    Downloaded 273 times
    Spoiler:Image
  • 0CodErr, в SHELL сначала cd /tmp0/1, а потом уже свою смотрелку запускать. Тогда да, прога покажет /tmp0/1.
    Siemargl, не понял, о каких "несколько printf-ов сообщений об ошибках" ты говоришь. Я заменил все sprintf(STD_OUT,...) на printf из-за появления отсутствующих линков, не помню, чтоб я что-то делал с выводом ошибок.
    Siemargl wrote:Думаю это вполне можно поправить в разборе командной строки.
    Опять не понял, каким образом? Как для fasm указывать каталог с исходниками если?
    punk_joker, видимо, пока нет, любой инклудник не будет найден.
    Вообще, сейчас я несколько нагружен, так что быстро исправлять не могу.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR wrote:в SHELL сначала cd /tmp0/1, а потом уже свою смотрелку запускать. Тогда да, прога покажет /tmp0/1.
    А, ну так-то да. После cd конечно должно работать :) В shell-ах других ОС, насколько знаю, тоже надо делать сперва cd.
    Вот, кстати, должна ли программа для зауска приложений также менять текущую директорию?
    Может быть, лучше даже опционально(CheckBox, например). Имею в виду такую программу viewtopic.php?f=9&t=2122
  • 0CodErr
    Вот, кстати, должна ли программа для зауска приложений также менять текущую директорию?
    По хорошему дополнительно надо указывать рабочий каталог для запускаемой программы. SHELL я рекомендовал потому, что там cd меняет рабочий каталог. Раньше и этого не было.
  • GerdtR

    Проверил С-- под Колибри. Уже купил ноутбук специально для программирования под ней.
    Некоторые программы собирает, но не все.

    1. cmm/aelia не собирается под Колибри, собирается под Windows
    2. warning'и пишутся на доску отладки, хотя они должны писаться в файл *.ERR, на доску должны выводиться только ошибки и результат сборки
    Из хаоса в космос
  • Всем привет. На сегодняшний день такое положение вещей.
    1. Текущий каталог в cmm устанавливается как каталог до самого cmm.kex, и не важно, какой каталог был установлен. Скриншот проблемы прилагаю. Впрочем возможно проблема исчезнет, когда у меня получится слинковать с новым libc(ругается на отсутствующие функции abort и atexit, в какой библиотеке они - не знаю, но в последнем sdk их нет).
    2. Warning'и пишутся на доску отладки, потому как в файле errors.cpp функции warningprint закоментирон sprintf, а вместо него просто printf. Короче, пофиксить - секундная работа. Правда, закономерный вопрос... как бы обычно компиляторы всё в консоль пишут(в нашем случае доска отладки). Не стандартно, по-моему. Или в файл удобнее?
    Attachments
    screen.PNG
    screen.PNG (47.03 KiB)
    Viewed 10352 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Закоммитил микропатчик, чтобы собирался gcc5.4 с libc.dll
    Работает, но только если cmm.kex в каталоге с компилируемой программой
  • Так, пока выложу текущий результат. Эта версия компилит в любой папке проекты. То есть кидаем c--.kex на /rd/0 , с--.ini можно один на всех туда же положить, а можно в папку проекта(сначала будет искать в папке с проектом) и всё, с консоли или скриптом можно компилить, не указывая полный путь до c--.kex. Да, избегайте пока папок, имеющих имя длиннее 7 символов.
    Attachments
    c--.kex (219.5 KiB)
    Downloaded 250 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Проблема с относительными путями исправлена. Короче, теперь всё видит.
    Attachments
    cmm (219.47 KiB)
    Downloaded 254 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Ну теперь заживем! :)
    Спасибо!
    Из хаоса в космос
  • Ещё есть недочёты, под отладчиком их видно, так что возможны ошибки в работе.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR wrote:Проблема с относительными путями исправлена. Короче, теперь всё видит.
    Никаким образом не смог заставить работать.
    Упорно отказывается кушать "..", ты точно правильную версию файла прикрепил?

    P.S. Вывод в консоль шикарен.
    Attachments
    1.png
    1.png (120.39 KiB)
    Viewed 10169 times
    Из хаоса в космос
  • Хм... во-первых, поправь "\" на "/" , у нас КОС такой не поддерживает, а дополнительной обработки в коде нет.
    Во-вторых, по непонятной мне причине, В argv[0] перед путём к экзешнику ставится символ сердечко. Ещё проверю, что да как, может мой косяк.
    И да, есть костыль :) В пути в инклуде пиши вместо ../lib что-нибудь вроде fold/../../lib. Да, не красиво, но если ".." в середине, то обрабатывается. Только папка fold нужна в каталоге с исходником.
    Сделал поправку, теперь прога в пути для поиска добавляется путь с комптлируемым файлом(думал, что он добавляется, но оказалось, что нет)
    PS: пока весь этот вывод в консоли пусть будет, мне удобней с ним. Когда с путями разберусь уже, то уберу.
    Attachments
    cmm (219.37 KiB)
    Downloaded 242 times
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Who is online

    Users browsing this forum: Bing [Bot] and 5 guests