Если он работает под виндой, то нафига изобретать велосипед, если есть, например, MS VC++?halyavin wrote:Выкладываю адаптацию этого компилятора для KolibriOS: http://shade.msu.ru/~msu-se/metcc.zip (работает под windows).
Tiny C Compiler
В последствии он будет портирован в Колибри.А вот портировать майкрософтовский компилятор нереально(он платный и его код майкрософт не откроет).
А как из программы получить доступ к командной строке и пути ?
Какието нелады с новой либой :
C Code:
_msys_write_text(6 - offs, 8, fcolor | FONT0, header, strlen(header));
Disassembled (old library):
seg000:000002F1 mov eax, 6
seg000:000002F6 mov ecx, ds:offs
seg000:000002FC sub eax, ecx
seg000:000002FE mov ecx, offset header
seg000:00000303 push ecx
seg000:00000304 mov [ebp+var_C], eax
seg000:00000307 call strlen
seg000:0000030C add esp, 4
seg000:0000030F push eax
seg000:00000310 mov eax, offset header
seg000:00000315 push eax
seg000:00000316 mov eax, ds:dword_C4E
seg000:0000031C push eax
seg000:0000031D mov eax, 8
seg000:00000322 push eax
seg000:00000323 mov eax, [ebp+var_C]
seg000:00000326 push eax
seg000:00000327 call _msys_write_text
Disassembled (new library):
seg000:000002F1 mov eax, 6
seg000:000002F6 mov ecx, ds:offs
seg000:000002FC sub eax, ecx
seg000:000002FE mov ecx, offset header
seg000:00000303 push ecx
seg000:00000304 mov [ebp+var_C], eax
seg000:00000307 loc_307:
seg000:00000307 call near ptr loc_307+1
seg000:0000030C add esp, 4
seg000:0000030F push eax
seg000:00000310 mov eax, offset header
seg000:00000315 push eax
seg000:00000316 mov eax, ds:dword_BE2
seg000:0000031C push eax
seg000:0000031D mov eax, 8
seg000:00000322 push eax
seg000:00000323 mov eax, [ebp-0Ch]
seg000:00000326 push eax
seg000:00000327 call _msys_write_text
C Code:
_msys_write_text(6 - offs, 8, fcolor | FONT0, header, strlen(header));
Disassembled (old library):
seg000:000002F1 mov eax, 6
seg000:000002F6 mov ecx, ds:offs
seg000:000002FC sub eax, ecx
seg000:000002FE mov ecx, offset header
seg000:00000303 push ecx
seg000:00000304 mov [ebp+var_C], eax
seg000:00000307 call strlen
seg000:0000030C add esp, 4
seg000:0000030F push eax
seg000:00000310 mov eax, offset header
seg000:00000315 push eax
seg000:00000316 mov eax, ds:dword_C4E
seg000:0000031C push eax
seg000:0000031D mov eax, 8
seg000:00000322 push eax
seg000:00000323 mov eax, [ebp+var_C]
seg000:00000326 push eax
seg000:00000327 call _msys_write_text
Disassembled (new library):
seg000:000002F1 mov eax, 6
seg000:000002F6 mov ecx, ds:offs
seg000:000002FC sub eax, ecx
seg000:000002FE mov ecx, offset header
seg000:00000303 push ecx
seg000:00000304 mov [ebp+var_C], eax
seg000:00000307 loc_307:
seg000:00000307 call near ptr loc_307+1
seg000:0000030C add esp, 4
seg000:0000030F push eax
seg000:00000310 mov eax, offset header
seg000:00000315 push eax
seg000:00000316 mov eax, ds:dword_BE2
seg000:0000031C push eax
seg000:0000031D mov eax, 8
seg000:00000322 push eax
seg000:00000323 mov eax, [ebp-0Ch]
seg000:00000326 push eax
seg000:00000327 call _msys_write_text
Ghost
Значит при компоновке strlen не найдена. Я сталкивался с подобной фигней. Если функция объявлена но её нет в библиотеке или в коде программы, компилятор не выводит никаких сообщений (unresolved externals) а записывает call с неправильным смещением.
Значит при компоновке strlen не найдена. Я сталкивался с подобной фигней. Если функция объявлена но её нет в библиотеке или в коде программы, компилятор не выводит никаких сообщений (unresolved externals) а записывает call с неправильным смещением.
Ghost
Размер melibc.a равен 50510? string.h подключен? Если все равно вставляет call $+1, не находя фунцию, то пошли прогу на мыло (http://shade.msu.ru/~msu-se/0ptlmcol6e.gif).
Размер melibc.a равен 50510? string.h подключен? Если все равно вставляет call $+1, не находя фунцию, то пошли прогу на мыло (http://shade.msu.ru/~msu-se/0ptlmcol6e.gif).
halyavin
Либу брал из обновлённого metcc.zip, скачал metccfix1.zip - всё Ok.
Либу брал из обновлённого metcc.zip, скачал metccfix1.zip - всё Ok.
попытался добавить поддержку argc argv в main-е...
параметры парсятся по-пробельно. Просьба всем кому интересно потестить
http://victor.kolibrios.org/download/metcc/bin.rar - бинарник компилера и загрузчика
http://victor.kolibrios.org/download/metcc/source.rar - исходные файлы, которые я правил
параметры парсятся по-пробельно. Просьба всем кому интересно потестить
http://victor.kolibrios.org/download/metcc/bin.rar - бинарник компилера и загрузчика
http://victor.kolibrios.org/download/metcc/source.rar - исходные файлы, которые я правил
Немного улучшил распознование параметров. Теперь если параметр начинается с двойных кавычек, пробелы игнорируются, и оканчивается этот параметр первой встречной кавычкой. Лишние пробельные символы между параметрами игнорируются.
Ссылки те же
Ссылки те же
По совсем непонятным мне причинам при длинном передаваемом параметре некоторые отладочные сообщения в начале не выводятся (например сообщение о старте программы сразу после mf_init). Переполнения выделенного буффера вроде не происходит, хотя я не уверен ,что проверка проходит вообще(она сразу после первого отладочного сообщения). Может это ядрышко борохлит?
Victor
Учти, что буфер для отладочных сообщений имеет ограниченный размер (4096 байт по-моему). Приеду из Петрозаводска 1 сентября - включу твои изменения (если ты не решишь залить все на SVN раньше).
Учти, что буфер для отладочных сообщений имеет ограниченный размер (4096 байт по-моему). Приеду из Петрозаводска 1 сентября - включу твои изменения (если ты не решишь залить все на SVN раньше).
с свн я только читать могу... так что самому придётся :-Р
http://diamondz.land.ru/klbr_doc/63.htm
Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.
Люди, а как писать статистические либы на нём, вроде бы можно, но я не знаю как.
Кстати, ковырялся я с ним:
stderr и stdout перенаправить в отладку
выложить размеры и знаки данных в tcc (а то libogg тебует)
определить NULL
скомпилировать melibc.a в metcc
stderr и stdout перенаправить в отладку
выложить размеры и знаки данных в tcc (а то libogg тебует)
определить NULL
скомпилировать melibc.a в metcc
Who is online
Users browsing this forum: No registered users and 1 guest