Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Oct 29, 2020 12:02 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 1140 posts ]  Go to page Previous 115 16 17 18 1976 Next
Author Message
PostPosted: Sat Apr 02, 2011 7:03 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Gluk
Как это после компиляции?


Top
   
PostPosted: Sat Apr 02, 2011 7:15 pm 
Offline
Kernel Developer

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

Код будет работать правильно до первого обращения к данным.


Top
   
PostPosted: Sat Apr 02, 2011 7:38 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Asper: "Как это после компиляции?" - мы скомпилировали код в бинарный файл, потом загрузили в память другого процесса, начиная с адреса, не равного нулю, где и передали уму бразды правления.

Serge, то есть никаких проблем с переходами (в т.ч. дальними) и вызовами функций не будет?

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


Top
   
PostPosted: Sat Apr 02, 2011 7:45 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Gluk
Значит всё-таки после загрузки в память, тогда понятно.


Top
   
PostPosted: Sat Apr 02, 2011 8:13 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Gluk
Если ты опишешь ситуацию подробно будет проще дать ответ.
С ветвлениями проблем не будет точно. С переходами jmp и call проблем не будет если только это не переходы по абсолютному адресу или косвенные переходы/вызоы call [label] jmp [label]. Но всё это будет замечательно работать до первого обращения к глобальным данным. То есть для среднестатистического кода шансы равны нулю.


Top
   
PostPosted: Sat Apr 02, 2011 9:57 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Serge, большое спасибо за ответ, именно такая информация мне нужна была. Более конкретно спросить не мог, так как задача, как я ее понимаю, именно такой общности.

Для победы над обращениями к памяти нужно добавлять к адресу данных адрес начала размещения загруженного в память кода?

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


Top
   
PostPosted: Sat Apr 02, 2011 10:06 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
org в помощь.


Top
   
PostPosted: Sat Apr 02, 2011 10:15 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Asper, если я правильно понял что делает эта директива, она не подойдет ввиду того, что при компиляции неизвестен адрес, по которому будет загружен код, и размещены данные

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


Top
   
PostPosted: Sat Apr 02, 2011 10:17 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Да это так. А зачем тебе это?


Top
   
PostPosted: Sat Apr 02, 2011 10:32 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Asper, цитата отсюда:

"Потоки виджетов:
Это - отдельные потоки процесса панели, рисующие в битмап, который выводит основной процесс на себя, потокам виджетов дается доступ к графической библиотеке (pixlib?) для упрощения рисования, и возможно средства для векторного рисования. Также виджет может задавать активные области в пределах себя (кнопки), ну и другие сервисы по необходимости. Сам код виджета подгружается из файла, структура которого будет оговорена, и который можно будет создать в fasm и других компиляторах (~других языков)."

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


Top
   
PostPosted: Sat Apr 02, 2011 10:43 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Может быть не париться и сделать их в виде библиотечных файлов, которые поддерживают определённый интерфейс, а уже управляющая программа будет отвечать, за реализацию данного интерфейса?


Top
   
PostPosted: Sat Apr 02, 2011 10:49 pm 
Offline
Kernel Developer

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

В твоём случае виджеты надо делать в виде длл. Они позиционно независимы. Ядро обработает релокации и тебе не надо будет думать о базовом адресе кода.


Top
   
PostPosted: Sat Apr 02, 2011 11:10 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Asper, Serge, так уже делает Sorcerer.

Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?

А упавший виджет уронит панель?

А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?

я пока что думаю что ответы будут Да, Да, Нет(?), что меня не вполне устраивает.

мне чем dll даже больше нравится вариант самостоятельных процессов с использованием расшареной памяти (так еще безопаснее)

не говоря уже про то, что dll это что-то сложное, и с привкусом HLL..

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


Top
   
PostPosted: Sat Apr 02, 2011 11:20 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Gluk wrote:
Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?

Ты программист, всё в твоих руках.
Если поставишь
Code:
still:
mcall 10
;.....
jmp still

то да.

А, если например так
Code:
still:
mcall 23,100
;.....
call UpdateWidgets
jmp still

то нет.

Gluk wrote:
А упавший виджет уронит панель?

Он уронит её и в обоих случаях.

Gluk wrote:
А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?

С памятью ты ещё намучаешься, если будешь использовать свой подход.


Top
   
PostPosted: Sat Apr 02, 2011 11:31 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Asper wrote:
Он уронит её и в обоих случаях.

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1140 posts ]  Go to page Previous 115 16 17 18 1976 Next

All times are UTC+03:00


Who is online

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