Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Jul 14, 2020 12:32 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 222 posts ]  Go to page Previous 1 2 3 4 515 Next
Author Message
 Post subject: Re: C--
PostPosted: Thu Jan 08, 2009 11:51 pm 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
такс... =)... вот я и решил сюда чтонить написать... но постарался по делу..

в общем.. прикрепил мелкий аривчик.. с двумя примерами для использования libini.obj...
первый написанный на fasm'е... рабочий..
второй на c--... как не странно - не рабочий...
накидал основу... чувствую что ошибся в какойто мелочи.. но не могу понять, где и как можно исправить... может кому не лень - посмотрит... вдруг поймет.. и выложит... как минимум 4 человека буду рады...
в readme.txt оставил мелкие заметки...


Attachments:
File comment: первая попытка..
libini_test_0010.7z [12.81 KiB]
Downloaded 154 times
Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 09, 2009 9:27 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Так уж и быть-в данный момент ковыряюсь в этом примере, убираю ошибки. Ух, Leency, вечно ты меня заставляешь ставить новые рекорды по распределению своего времени. Напомню, именно Leency втянул меня в использование ЯВУ в Колибри, особенно, в связи с совместными программами.


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 09, 2009 9:51 pm 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
Если делать по аналогии с edit_box то
Code:
dword ini_get_str = #aini_get_str;
dword ini_set_str = #aini_set_str;
dword ini_get_int = #aini_get_int;
dword ini_set_int = #aini_set_int;
dword ini_enum_sections = #aini_enum_sections;
dword ini_enum_keys = #aini_enum_keys;
dword  am__ = 0x0;
dword  bm__ = 0x0;
char aini_get_str[12] = "ini.get_str\0";
char aini_set_str[12] = "ini.set_str\0";
char aini_get_int[12] = "ini.get_int\0";
char aini_set_int[12] = "ini.set_int\0";
char aini_enum_sections[18] = "ini.enum_sections\0";
char aini_enum_keys[14] = "ini.enum_keys\0";


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 09, 2009 10:49 pm 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
Veliant, у тебя работает?
я собираю... у меня не работает.. =(...


Top
   
 Post subject: Re: C--
PostPosted: Sat Jan 10, 2009 7:06 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Вчера сделал - пример загружает libini, более того, может грузить любые _стандартные_ библиотеки. box_lib не загрузит, т.к. эта либа не имеет точки входа как таковой, а первый вход в таблице экспортов должен быть точкой входа, которая принимает в eax-ebx-ecx-edx указатели на, соответственно, malloc-free-realloc-DllLoad.
console.obj тоже не работает, т.к. его точка входа этому не соответствует, принимает совершенно другое, да ещё и stdcall, так что сносит стек. Зато все либы от Mike.dld прекрасно работают. Спасибо за то, что он нормально комментирует свой код, так что любой кто хочет, может в нём разобраться, а некоторые вещи делать и не разобравшись.


Attachments:
libini.7z [3.9 KiB]
Downloaded 161 times
Top
   
 Post subject: Re: C--
PostPosted: Sat Jan 10, 2009 7:17 pm 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
Nable, спасибо большое.. =)


Top
   
 Post subject: Re: C--
PostPosted: Sat Jan 10, 2009 10:16 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Давно хотел сделать этот код, но это долго было, а сейчас просто не выдержал, до 2х ночи сидел, почти всё время убил на то, чтобы так расставить код, чтобы компилятор с-- сгенерил код без ошибок, ибо он иногда вносит ошибки, когда вставляет выравнивание, но адреса расставляет, как будто ничего не вставил, в результате идёт обращение по адресу, меньшему, чем на самом деле. В итоге плюнул и отключил выравнивания ('?alignword FALSE'). Всё равно их лучше расставлять руками (директива '?align 4' перед критичной функцией или кучкой переменных). Маленькое напутствие - не нужно указывать размер статических массивов - компилятор сам его посчитает. И ставить символ '\0' в конце строк, выделенных двойными кавычками (") - в С это и так означает, что в конце нужно ставить 0.


Top
   
 Post subject: Re: C--
PostPosted: Sun Jan 11, 2009 1:31 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Nable wrote:
первый вход в таблице экспортов должен быть точкой входа, которая принимает в eax-ebx-ecx-edx указатели на, соответственно, malloc-free-realloc-DllLoad.

Опа... это где это сказано? IMHO такие приколы - временная заплатка, вызванная отсутствием нормального механизма импорта/экспорта. Порядок размещения данных в экспорте совершенно произвольный, а экспорт следует осуществлять по именам. Тогда не будет никаких замечаний типа "может грузить любые _стандартные_ библиотеки" - точка входа в не менее стандартных библиотеках console.obj и pixlib.obj называется START, а точка входа в библиотеках libs-dev называется lib_init.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject: Re: C--
PostPosted: Tue Jan 13, 2009 8:04 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Да, ты абсолютно прав, я даже соглашусь с тобой в том, что C-- вреден. Но согласятся ли остальные? Что они скажут, и что с ними делать?

P.S. Если кому интересно, то функции, которая вызывает точку входа библиотеки, передаётся фактически указатель на таблицу импортов, в которой нужно найти либо lib_init (вызывать, как здесь уже реализовано), либо START (передавать параметр 1=DLL_ENTRY, типа, причина обращения - инициализация), либо, если не найдено, то предполагать, что точки входа нет и выходить из функции.


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 16, 2009 9:30 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Я тут в предыдущем посте согласился с Diamond'ом, что C-- вреден, и ожидал, что кто-нибудь ещё выскажется. Всем всё равно? С Leency, то понятно, ему нужно лишь показать, как собирать в нормальном компиляторе, и он привыкнет, вроде с MSVC начинал. Но мне казалось, что были люди, хотящие начать с С--. Они что-нибудь скажут? Мне этот компилятор-то долгое время нравился, пока я не нарвался на глюки, после этого стало жалко своё время.


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 16, 2009 10:02 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
я не юзаю hll
и не специалист
так что мне дей-
ствительно всё
равно)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 16, 2009 10:02 pm 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
Когда нужна гибкость ассемблера и не хочется особо париться чтоб написать чтонить маленькое то оч даже не прочь его использовать.. побаловался немного с ним вполне можно даже написать на нем загрузчик для ОС с дискеты, так же спокойно получилось на нем написать код который ищет PCI на компе и контроллер USB. Так что если по мелочи и крупные проекты не писать то вполне приличный компилятор и на мой взгляд довольно простой и гибкий


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 16, 2009 10:26 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
to Veliant
Да, это факт, и мне нравилось. Но после того, как прокорпел над последним выложеннным примером несколько часов, из которых менее одного - на собственно написание - покоробило.


Top
   
 Post subject: Re: C--
PostPosted: Fri Jan 16, 2009 11:25 pm 
Offline
User avatar

Joined: Tue Jan 24, 2006 8:50 am
Posts: 249
Nable
а что за глюки??? их можно исправить?
>...примером несколько часов, из которых менее одного - на собственно написание...
остальное время боролся с глюками?

я сам паскалист.... поэтому и тяжело использовать Си.... сам С-- мне очень понравился.... побольше опыта и можно на нем писать мелкие проги.... а потом уже легче будет портировать или переписывать на фасм.... хотя с таким подходом легче сразу писать на фасме...


Top
   
 Post subject: Re: C--
PostPosted: Sun Jan 18, 2009 9:46 am 
Offline

Joined: Sun Nov 04, 2007 2:46 am
Posts: 390
Как ни странно, я сильно поменял свою точку зрения ... С-- не так уж и плох, и это доказывают приложения написанные на нем - я считаю что это лучшее что есть в Колибри :)


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


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