Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Dec 08, 2019 9:57 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 231 posts ]  Go to page Previous 1 2 3 4 516 Next
Author Message
 Post subject: Re: Tiny C Compiler
PostPosted: Mon Aug 21, 2006 7:31 pm 
Offline

Joined: Tue Apr 18, 2006 11:48 pm
Posts: 53
halyavin wrote:
Выкладываю адаптацию этого компилятора для KolibriOS: http://shade.msu.ru/~msu-se/metcc.zip (работает под windows).


Если он работает под виндой, то нафига изобретать велосипед, если есть, например, MS VC++?


Top
   
 Post subject:
PostPosted: Mon Aug 21, 2006 11:04 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
В последствии он будет портирован в Колибри.А вот портировать майкрософтовский компилятор нереально(он платный и его код майкрософт не откроет).


Top
   
 Post subject:
PostPosted: Tue Aug 22, 2006 11:37 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
А как из программы получить доступ к командной строке и пути ?


Top
   
 Post subject:
PostPosted: Wed Aug 23, 2006 2:05 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Какието нелады с новой либой :
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


Top
   
 Post subject:
PostPosted: Wed Aug 23, 2006 6:41 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Ghost
Значит при компоновке strlen не найдена. Я сталкивался с подобной фигней. Если функция объявлена но её нет в библиотеке или в коде программы, компилятор не выводит никаких сообщений (unresolved externals) а записывает call с неправильным смещением.


Top
   
 Post subject:
PostPosted: Wed Aug 23, 2006 8:50 pm 
Ghost
Размер melibc.a равен 50510? string.h подключен? Если все равно вставляет call $+1, не находя фунцию, то пошли прогу на мыло (http://shade.msu.ru/~msu-se/0ptlmcol6e.gif).


Top
   
 Post subject:
PostPosted: Thu Aug 24, 2006 9:22 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
halyavin
Либу брал из обновлённого metcc.zip, скачал metccfix1.zip - всё Ok.


Top
   
 Post subject:
PostPosted: Fri Aug 25, 2006 10:58 am 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
попытался добавить поддержку argc argv в main-е...
параметры парсятся по-пробельно. Просьба всем кому интересно потестить
http://victor.kolibrios.org/download/metcc/bin.rar - бинарник компилера и загрузчика
http://victor.kolibrios.org/download/metcc/source.rar - исходные файлы, которые я правил


Top
   
 Post subject:
PostPosted: Sat Aug 26, 2006 1:06 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Немного улучшил распознование параметров. Теперь если параметр начинается с двойных кавычек, пробелы игнорируются, и оканчивается этот параметр первой встречной кавычкой. Лишние пробельные символы между параметрами игнорируются.
Ссылки те же


Top
   
 Post subject:
PostPosted: Sat Aug 26, 2006 7:01 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
По совсем непонятным мне причинам при длинном передаваемом параметре некоторые отладочные сообщения в начале не выводятся (например сообщение о старте программы сразу после mf_init). Переполнения выделенного буффера вроде не происходит, хотя я не уверен ,что проверка проходит вообще(она сразу после первого отладочного сообщения). Может это ядрышко борохлит?


Top
   
 Post subject:
PostPosted: Sun Aug 27, 2006 8:22 am 
Victor
Учти, что буфер для отладочных сообщений имеет ограниченный размер (4096 байт по-моему). Приеду из Петрозаводска 1 сентября - включу твои изменения (если ты не решишь залить все на SVN раньше).


Top
   
 Post subject:
PostPosted: Sun Aug 27, 2006 7:57 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
с свн я только читать могу... так что самому придётся :-Р


Top
   
 Post subject:
PostPosted: Mon Aug 28, 2006 4:55 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
http://diamondz.land.ru/klbr_doc/63.htm
Quote:
Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.


Top
   
 Post subject:
PostPosted: Tue Aug 29, 2006 7:10 pm 
Offline

Joined: Mon Apr 10, 2006 7:22 am
Posts: 76
Люди, а как писать статистические либы на нём, вроде бы можно, но я не знаю как.


Top
   
 Post subject:
PostPosted: Thu Aug 31, 2006 7:42 pm 
Offline

Joined: Mon Apr 10, 2006 7:22 am
Posts: 76
Кстати, ковырялся я с ним:
stderr и stdout перенаправить в отладку
выложить размеры и знаки данных в tcc (а то libogg тебует)
определить NULL
скомпилировать melibc.a в metcc


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 231 posts ]  Go to page Previous 1 2 3 4 516 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited