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
  • Ghost
    Значит при компоновке strlen не найдена. Я сталкивался с подобной фигней. Если функция объявлена но её нет в библиотеке или в коде программы, компилятор не выводит никаких сообщений (unresolved externals) а записывает call с неправильным смещением.
  • Ghost
    Размер melibc.a равен 50510? string.h подключен? Если все равно вставляет call $+1, не находя фунцию, то пошли прогу на мыло (http://shade.msu.ru/~msu-se/0ptlmcol6e.gif).
  • halyavin
    Либу брал из обновлённого metcc.zip, скачал metccfix1.zip - всё Ok.
  • попытался добавить поддержку argc argv в main-е...
    параметры парсятся по-пробельно. Просьба всем кому интересно потестить
    http://victor.kolibrios.org/download/metcc/bin.rar - бинарник компилера и загрузчика
    http://victor.kolibrios.org/download/metcc/source.rar - исходные файлы, которые я правил
  • Немного улучшил распознование параметров. Теперь если параметр начинается с двойных кавычек, пробелы игнорируются, и оканчивается этот параметр первой встречной кавычкой. Лишние пробельные символы между параметрами игнорируются.
    Ссылки те же
  • По совсем непонятным мне причинам при длинном передаваемом параметре некоторые отладочные сообщения в начале не выводятся (например сообщение о старте программы сразу после mf_init). Переполнения выделенного буффера вроде не происходит, хотя я не уверен ,что проверка проходит вообще(она сразу после первого отладочного сообщения). Может это ядрышко борохлит?
  • Victor
    Учти, что буфер для отладочных сообщений имеет ограниченный размер (4096 байт по-моему). Приеду из Петрозаводска 1 сентября - включу твои изменения (если ты не решишь залить все на SVN раньше).
  • с свн я только читать могу... так что самому придётся :-Р
  • http://diamondz.land.ru/klbr_doc/63.htm
    Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.
  • Люди, а как писать статистические либы на нём, вроде бы можно, но я не знаю как.
  • Кстати, ковырялся я с ним:
    stderr и stdout перенаправить в отладку
    выложить размеры и знаки данных в tcc (а то libogg тебует)
    определить NULL
    скомпилировать melibc.a в metcc
  • Who is online

    Users browsing this forum: No registered users and 5 guests