C-- Sphinx Compiler
-
Я правильно понял, из-за проблем с относительными путями, собрать одну из программ на SVN не выйдет? Или же я что-то не так делал?to infinity and beyond
Не так. Все приложения в системе наследуют текущий каталог от родительского процесса. Это свойство ядра. Разработчики файловых менеджеров забывают переключать рабочий каталог при навигации по дереву. Поэтому рекомендую пользоваться SHELL.GerdtR wrote: Увы, в КОС текущий каталог устанавливается как /rd/0 и не важно откуда запущена прога. А у прог с newlib текущий каталог ставится как путь, где находится сам кекс, что не многим лучше.
Так вроде у Shell тоже "/rd/1". svn6300-imgSerge wrote:Поэтому рекомендую пользоваться SHELL.
Это выводит текущую директорию в 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:
Spoiler:
0CodErr, в SHELL сначала cd /tmp0/1, а потом уже свою смотрелку запускать. Тогда да, прога покажет /tmp0/1.
Siemargl, не понял, о каких "несколько printf-ов сообщений об ошибках" ты говоришь. Я заменил все sprintf(STD_OUT,...) на printf из-за появления отсутствующих линков, не помню, чтоб я что-то делал с выводом ошибок.
punk_joker, видимо, пока нет, любой инклудник не будет найден.
Вообще, сейчас я несколько нагружен, так что быстро исправлять не могу.
Siemargl, не понял, о каких "несколько printf-ов сообщений об ошибках" ты говоришь. Я заменил все sprintf(STD_OUT,...) на printf из-за появления отсутствующих линков, не помню, чтоб я что-то делал с выводом ошибок.
Опять не понял, каким образом? Как для fasm указывать каталог с исходниками если?Siemargl wrote:Думаю это вполне можно поправить в разборе командной строки.
punk_joker, видимо, пока нет, любой инклудник не будет найден.
Вообще, сейчас я несколько нагружен, так что быстро исправлять не могу.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
А, ну так-то да. После cd конечно должно работать В shell-ах других ОС, насколько знаю, тоже надо делать сперва cd.GerdtR wrote:в SHELL сначала cd /tmp0/1, а потом уже свою смотрелку запускать. Тогда да, прога покажет /tmp0/1.
Вот, кстати, должна ли программа для зауска приложений также менять текущую директорию?
Может быть, лучше даже опционально(CheckBox, например). Имею в виду такую программу viewtopic.php?f=9&t=2122
0CodErr
По хорошему дополнительно надо указывать рабочий каталог для запускаемой программы. SHELL я рекомендовал потому, что там cd меняет рабочий каталог. Раньше и этого не было.Вот, кстати, должна ли программа для зауска приложений также менять текущую директорию?
GerdtR
Проверил С-- под Колибри. Уже купил ноутбук специально для программирования под ней.
Некоторые программы собирает, но не все.
1. cmm/aelia не собирается под Колибри, собирается под Windows
2. warning'и пишутся на доску отладки, хотя они должны писаться в файл *.ERR, на доску должны выводиться только ошибки и результат сборки
Проверил С-- под Колибри. Уже купил ноутбук специально для программирования под ней.
Некоторые программы собирает, но не все.
1. cmm/aelia не собирается под Колибри, собирается под Windows
2. warning'и пишутся на доску отладки, хотя они должны писаться в файл *.ERR, на доску должны выводиться только ошибки и результат сборки
Из хаоса в космос
Всем привет. На сегодняшний день такое положение вещей.
1. Текущий каталог в cmm устанавливается как каталог до самого cmm.kex, и не важно, какой каталог был установлен. Скриншот проблемы прилагаю. Впрочем возможно проблема исчезнет, когда у меня получится слинковать с новым libc(ругается на отсутствующие функции abort и atexit, в какой библиотеке они - не знаю, но в последнем sdk их нет).
2. Warning'и пишутся на доску отладки, потому как в файле errors.cpp функции warningprint закоментирон sprintf, а вместо него просто printf. Короче, пофиксить - секундная работа. Правда, закономерный вопрос... как бы обычно компиляторы всё в консоль пишут(в нашем случае доска отладки). Не стандартно, по-моему. Или в файл удобнее?
1. Текущий каталог в cmm устанавливается как каталог до самого cmm.kex, и не важно, какой каталог был установлен. Скриншот проблемы прилагаю. Впрочем возможно проблема исчезнет, когда у меня получится слинковать с новым libc(ругается на отсутствующие функции abort и atexit, в какой библиотеке они - не знаю, но в последнем sdk их нет).
2. Warning'и пишутся на доску отладки, потому как в файле errors.cpp функции warningprint закоментирон sprintf, а вместо него просто printf. Короче, пофиксить - секундная работа. Правда, закономерный вопрос... как бы обычно компиляторы всё в консоль пишут(в нашем случае доска отладки). Не стандартно, по-моему. Или в файл удобнее?
- Attachments
-
-
screen.PNG (47.03 KiB)Viewed 10551 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Закоммитил микропатчик, чтобы собирался gcc5.4 с libc.dll
Работает, но только если cmm.kex в каталоге с компилируемой программой
Работает, но только если cmm.kex в каталоге с компилируемой программой
Так, пока выложу текущий результат. Эта версия компилит в любой папке проекты. То есть кидаем c--.kex на /rd/0 , с--.ini можно один на всех туда же положить, а можно в папку проекта(сначала будет искать в папке с проектом) и всё, с консоли или скриптом можно компилить, не указывая полный путь до c--.kex. Да, избегайте пока папок, имеющих имя длиннее 7 символов.
- Attachments
-
-
c--.kex (219.5 KiB)Downloaded 252 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Проблема с относительными путями исправлена. Короче, теперь всё видит.
- Attachments
-
-
cmm (219.47 KiB)Downloaded 256 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Ну теперь заживем!
Спасибо!
Спасибо!
Из хаоса в космос
Ещё есть недочёты, под отладчиком их видно, так что возможны ошибки в работе.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Никаким образом не смог заставить работать.GerdtR wrote:Проблема с относительными путями исправлена. Короче, теперь всё видит.
Упорно отказывается кушать "..", ты точно правильную версию файла прикрепил?
P.S. Вывод в консоль шикарен.
- Attachments
-
-
1.png (120.39 KiB)Viewed 10368 times
-
Из хаоса в космос
Хм... во-первых, поправь "\" на "/" , у нас КОС такой не поддерживает, а дополнительной обработки в коде нет.
Во-вторых, по непонятной мне причине, В argv[0] перед путём к экзешнику ставится символ сердечко. Ещё проверю, что да как, может мой косяк.
И да, есть костыль В пути в инклуде пиши вместо ../lib что-нибудь вроде fold/../../lib. Да, не красиво, но если ".." в середине, то обрабатывается. Только папка fold нужна в каталоге с исходником.
Сделал поправку, теперь прога в пути для поиска добавляется путь с комптлируемым файлом(думал, что он добавляется, но оказалось, что нет)
PS: пока весь этот вывод в консоли пусть будет, мне удобней с ним. Когда с путями разберусь уже, то уберу.
Во-вторых, по непонятной мне причине, В argv[0] перед путём к экзешнику ставится символ сердечко. Ещё проверю, что да как, может мой косяк.
И да, есть костыль В пути в инклуде пиши вместо ../lib что-нибудь вроде fold/../../lib. Да, не красиво, но если ".." в середине, то обрабатывается. Только папка fold нужна в каталоге с исходником.
Сделал поправку, теперь прога в пути для поиска добавляется путь с комптлируемым файлом(думал, что он добавляется, но оказалось, что нет)
PS: пока весь этот вывод в консоли пусть будет, мне удобней с ним. Когда с путями разберусь уже, то уберу.
- Attachments
-
-
cmm (219.37 KiB)Downloaded 246 times
-
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Who is online
Users browsing this forum: No registered users and 21 guests