Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Feb 21, 2020 10:40 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
PostPosted: Tue Mar 31, 2009 11:19 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Итак. В общем, что.. Хорошо известно, что в Колибри мы пользуем в качестве библиотек объектные файлы формата MS COFF, экспортируя таблицу EXPORTS.
Как я понимаю, для вызова функции в сей таблице ищется нужное имя, а рядом лежит адрес, что есть способ вызвать сию функцию.
К чему это я.. Я хотел спросить, как использовать такую библиотеку в программировании под операционные системы семейства Windows на языке ассемблера FASM.
Даже если оно будет костелизировано..
Добавлю, что искал по инету как вообще применяются файлы в таком формате, но найденное как-то не соответствовало искомому (не исключаю и что я плохо искал).


Top
   
PostPosted: Wed Apr 01, 2009 8:18 am 
По моему пустая затея - под Win с большой долей вероятности существует любая библиотека которая может быть реализована в Колибри усилиями дефолтных программистов. Лучше уж ставить проблему наоборот - как использовать библиотеки других ОС в Колибри (есно соблюдая лицензию). Я бы например взялся за реализацию медиаплеера, если бы хватило знаний по библиотекам Линусовых плееров, но пока только мечта. (впрочем zSea тоже задумывалась еще 4 года назад)


Top
   
PostPosted: Wed Apr 01, 2009 4:18 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
вполне возможно
но мне нужно все-таки знать как это можно сделать..

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


Top
   
PostPosted: Thu Apr 09, 2009 9:59 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
нет идей?..
Пока вижу только такой вариант: загружаем файл в память, ищем адреса функций, и, собственно, вызываем. Адреса думаю найду (имена в хекс-редакторе увидел, адреса рядом наверное). Но это как-то не очень разумно. Или нормально?

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


Top
   
PostPosted: Thu Apr 09, 2009 10:09 pm 
Вообщето адреса в момент запуска корректируются системой. Так что имена не меняются, а вот адреса могу оказаться другие, в зависимости от адреса начиная с которого загружена функция. Скорее всего тебе придется после загрузки корректировать имеющиеся адреса. Я не знаю как в текущей ситуации это дело реализовано (код в ядре не разбирал), но предпологаю что изначально там просто хранится смещение от нулевого адреса, хотя могу ошибаться. Надо автора кода в ядре спросить, кстати кто это все изначально реализовал Serge или Daimond?


Top
   
PostPosted: Thu Apr 09, 2009 11:44 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Проще сделать obj пригодный для статической линковки. Объявить все экспортируемые функции public, тогда для них будут записи в таблице символов COFF. Pixlib вообще на С и должна свободно ликоваться с Win.


Top
   
PostPosted: Fri Apr 10, 2009 12:02 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Serge, а как это сделать? Ну или где прочитать?

Mario, неужели изменятся адреса относительно начала файла? это мне кажется странным..

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


Top
   
PostPosted: Fri Apr 10, 2009 12:46 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Gluk

Если на фасме то объяви экспортируемые функции public
Code:
public _myfunc
_myfunc:
           ...
           ...
           ret
Если на С то компилятор сделает всё сам.


Top
   
PostPosted: Fri Apr 10, 2009 9:01 am 
Gluk
Я имел ввиду что твоей программе придется скорректировать после загрузки адреса, чтобы каждый раз при обращении не вычислять адрес плюс смещение. Это если будет использоваться динамическая подгрузка, а не статическая линковка.


Top
   
PostPosted: Fri Apr 10, 2009 12:51 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
спасибо вам большое)
дальше доразбираюсь..

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 10 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 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