Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб дек 16, 2017 9:31 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 218 сообщений ]  На страницу 1 2 3 4 515 След.
Автор Сообщение
 Заголовок сообщения: Tiny C Compiler
СообщениеДобавлено: Сб авг 19, 2006 3:16 pm 
Выкладываю адаптацию этого компилятора для KolibriOS: http://shade.msu.ru/~msu-se/metcc.zip (работает под windows). Компиляция выполняется командой metcc.exe program.c melibc.a -oprogram. Просьба сишникам помочь с завершением стандартной библиотеки. Может ее стоит выложить на svn?


UPD by SoUrcerer: свежая версия здесь: viewtopic.php?f=45&t=565&p=44449#p44448


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 19, 2006 10:08 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Андрей,хорошую работу проделал!

Компилятор языка высокого уровня под Колибри мне очень нужен(не хочу писать под винду и линукс, а ассемблер далеко не все знают(язык высокого уровня для того мне нужен ,чтобы можно было проверить логику работы моей программы другим людям)).

Насколько я понимаю,для портирования сомого компилятора под Колибри необходимо до конца портировать стандартную библиотеку libc.
Переписать часть кода с учетом новых системных функций(58 заменить на 70 и некоторое другое).В той части кода,что сейчас присутствует,портированы почти все стандартные функции библиотеки libc.

А это случайно не та libc,что портировал Ярек ?


Думаю,что библиотеку нужно будет выложить на svn после её портирования(и компилятор тамже).
Вот только сишник из меня неахти,поэтому,к сожалению,помоч немогу.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 8:31 am 
andrew_programmer писал(а):
А это случайно не та libc,что портировал Ярек?

Нет не та. У него лучше, но она слишком портируемая - там куча не нужных #if и #ifdef, поэтому в ней сложно разобраться (что мне и не удалось).
andrew_programmer писал(а):
Думаю,что библиотеку нужно будет выложить на svn после её портирования(и компилятор тамже).

Не понял про портирование библиотеки - она уже под KolibriOS, куда ее еще портировать? Если имеется в виду завершение ее написания, то думаю это произойдет не скоро :( ... Да и какой смысл выкладывать на svn завершенные проекты :? ?
andrew_programmer писал(а):
Вот только сишник из меня неахти,поэтому,к сожалению,помоч немогу.

А на чем ты пишешь?


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 11:18 am 
Опс, забыл про лидирующие подчеркивания. Исправленный melibc.a можно взять здесь: http://shade.msu.ru/~msu-se/metccfix.zip
metcc.zip также перезалит.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 1:50 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
>Не понял про портирование библиотеки - она уже под KolibriOS, куда ее еще портировать?

Я имел ввиду замену в коде 58-ой функции функции на 70.

> Да и какой смысл выкладывать на svn завершенные проекты ?

А я думал,что раздел "скачать" предназначен для скачивания софта под Колибри.Оказалось,что почему-то нет.


>А на чем ты пишешь?

Всё завичит от того,для какой цели пишется программа.

1) Если код программы будут анализировать другие люди,то использую языки высокого уровня.Самой простой из тех,что я изредка использую, - это borland pascal.Но у него ограничения на размер используемой памяти.Если мне нужно работать с памятью большей чем 64 килобайта,то я использую си.А именно компилятор gcc.Но то ,как в си реализована работа с указателями - мне ОЧЕНЬ ненравиться.А ещё у си синтаксис дурацкий.А также у него размер кода получается большой и не очень быстрый.Поэтому использую его только когда деваться некуда.


2)Если пишу для души,то использую исключительно Ассемблер и исключительно операционную систему Колибри.90% того времени,что я провожу за компьютером - я провожу именно в Колибри.Я хочу чтобы,Колибри стала моей основной операционной системой.И насколько могу,вношу влад в её развитие.


P.S.
Существуют различные вкрсии паскаля кроме borland pascal.К примеру Free Pascal.Только скачивать 12 мегов - это для меня нереально много(и дорого и провайдер не позволяет).

Считается,что Ассемблер сложный язык программирования.А помоему наоборот - он самый простой(по синтаксису) язык программирования.Многие вещи в нём(к примеру работа с указателями) реализуется проще и понятней чем в си.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 2:43 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Я своим предыдущим сообщением совсем не хотел сказать,что компилятор си под Колибри не нужен.Он ОЧЕНЬ даже нужен.Это позволит программистам,пишущим на си(таких сейчас немало) писать программы под Колибри.Они портируют многоплатформенные библиотеки(к примеру SDL) и тогда,можно будет спокойно писать программы под Колибри и при этом быть уверенным,что они будут так-же хорошо работать и на других платформах.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 4:51 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Цитата:
Но то ,как в си реализована работа с указателями - мне ОЧЕНЬ ненравиться.
Почему? Работать с указателями в Си намного проще чем в Паскале. Компилятор сам отслеживает размер данных при арифметических опреациях с указателями. Массивы и указатели - близнецы-братья что тоже очень удобно.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 5:43 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
Отличная работа! Осталось только параметры командной строки реализовать, а остальное (библиотеки) можно сделать на базе того что уже есть.
В дистрибутиве всего один пример, и то, помойму это проверка malloc`а. Если комуто интересно вот мой пример :
Код:
#include "stdio.h"
#include "string.h"
#include "mesys.h"

#define FONT0      0
#define FONT1      0x10000000

#define BT_NORMAL   0
#define BT_DEL      0x80000000
#define BT_HIDE      0x40000000
#define BT_NOFRAME   0x20000000

char header[]={" -= C demo programm. Compiled whith TCC 0.9.23 halyavin port =-   "};

void rotate_str(char *str){
   char tmp;
   int i;
   tmp = str[0];
   for(i = 1; str[i ]; i++)str[i - 1] = str[i];
   str[i - 1] = tmp;
}

void draw_window(){
   static int offs = 0;
   static int fcolor = 0;
   static int col = 0;
   
   _msys_window_redraw(1);
   _msys_draw_window(100, 100, 300, 120, 0xaabbcc, 2, 0x5080d0, 0, 0x5080d0);
   _msys_write_text(6 - offs, 8, fcolor | FONT0, header, strlen(header));
   _msys_draw_bar(1, 6, 5, 13, 0x05080d0);
   _msys_draw_bar(274, 6, 26, 13, 0x05080d0);
   _msys_make_button(300 - 19, 5, 12, 12, 1 | BT_NORMAL, 0x6688dd);
   _msys_window_redraw(2);

   offs = (offs + 1) % 6;
   if(!offs)rotate_str(header);
   
   fcolor += (col)?-0x80808:0x80808;
   if(fcolor > 0xf80000 || fcolor == 0)col = !col;
}

int main(int argc, char **argv){

   while(!0){
      switch(_msys_wait_for_event(10)){
      case 2:return 0;
         
      case 3:
         if(_msys_get_button_id() == 1)return 0;
         break;
         
      default:
         draw_window();
         break;
      }
   }
}

помойму здесь всё понятно. Удачи!


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 20, 2006 7:21 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Serge

У меня 100% образное мышление и от того,каким образом будет обозначаться объект(в данном случае указатели) ,зависит моё восприятие этого объекта.Синтаксис обозначения указателей,принятый в си,мне непросто понять(следовательно увеличивается время на разбирание кода).А вот синтаксис работы с указателями в паскале - для меня прост и легко понятен.А самый понятный для меня синтаксис указателей - это Ассемблерный.В общем всё это связано с особенностями мышления,которое у разных людей разное.


Ghost

Хороший пример.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 21, 2006 9:06 am 
Не в сети

Зарегистрирован: Пн май 01, 2006 10:12 pm
Сообщения: 349
Незнаю почему пример Serge у меня не запустился ни в эмуляторе ни в реальной системе...


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 21, 2006 9:18 am 
Не в сети

Зарегистрирован: Чт янв 26, 2006 8:47 pm
Сообщения: 284
bug fix скачал?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 21, 2006 9:57 am 
Не в сети

Зарегистрирован: Пн май 01, 2006 10:12 pm
Сообщения: 349
оо.. заработало.. всем спасибо


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 21, 2006 10:03 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
Ошибка в функции _msys_putimage, в файле draw_image.asm нужно добавить mov eax, 7 (кстати, как компилять либу ?). Временно я использовал такой код :
Код:
void _msys_putimage(int x, int y, int xsize, int ysize, void* image){
   asm("movl   8(%esp), %edx");
   asm("movl   16(%esp), %ecx");
   asm("shll   $16, %ecx");
   asm("shll   $16, %edx");
   asm("movw   20(%esp), %cx");
   asm("movw   12(%esp), %dx");
   asm("movl   24(%esp), %ebx");
   asm("movl    $7,%eax");
   asm("int   $0x40");
}

в tcc используется синтаксис AT&T ассемблера.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 21, 2006 10:55 am 
Ghost
Спасибо, нашел еще одну существенную ошибку - системные функции объявлены как stdcall, но они не освобождали стек. выкладываю новую версию melibc.a: http://shade.msu.ru/~msu-se/metccfix1.zip. Перезалил metcc.zip (там соотвественно исправлены глюки с неосвобождением стека).


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 21, 2006 10:57 am 
Либа компилится с помощью скрипта compile.js. Только там нужно в тексте подправить пути к компилятору С и ассемблера.


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 218 сообщений ]  На страницу 1 2 3 4 515 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB