Page 17 of 77
Re: Помогите новичку
Posted: Sat Apr 02, 2011 7:03 pm
by Asper
Gluk
Как это после компиляции?
Re: Помогите новичку
Posted: Sat Apr 02, 2011 7:15 pm
by Serge
Gluk
Код будет работать правильно до первого обращения к данным.
Re: Помогите новичку
Posted: Sat Apr 02, 2011 7:38 pm
by Gluk
Asper: "Как это после компиляции?" - мы скомпилировали код в бинарный файл, потом загрузили в память другого процесса, начиная с адреса, не равного нулю, где и передали уму бразды правления.
Serge, то есть никаких проблем с переходами (в т.ч. дальними) и вызовами функций не будет?
Re: Помогите новичку
Posted: Sat Apr 02, 2011 7:45 pm
by Asper
Gluk
Значит всё-таки после загрузки в память, тогда понятно.
Re: Помогите новичку
Posted: Sat Apr 02, 2011 8:13 pm
by Serge
Gluk
Если ты опишешь ситуацию подробно будет проще дать ответ.
С ветвлениями проблем не будет точно. С переходами jmp и call проблем не будет если только это не переходы по абсолютному адресу или косвенные переходы/вызоы call [label] jmp [label]. Но всё это будет замечательно работать до первого обращения к глобальным данным. То есть для среднестатистического кода шансы равны нулю.
Re: Помогите новичку
Posted: Sat Apr 02, 2011 9:57 pm
by Gluk
Serge, большое спасибо за ответ, именно такая информация мне нужна была. Более конкретно спросить не мог, так как задача, как я ее понимаю, именно такой общности.
Для победы над обращениями к памяти нужно добавлять к адресу данных адрес начала размещения загруженного в память кода?
Re: Помогите новичку
Posted: Sat Apr 02, 2011 10:06 pm
by Asper
org в помощь.
Re: Помогите новичку
Posted: Sat Apr 02, 2011 10:15 pm
by Gluk
Asper, если я правильно понял что делает эта директива, она не подойдет ввиду того, что при компиляции неизвестен адрес, по которому будет загружен код, и размещены данные
Re: Помогите новичку
Posted: Sat Apr 02, 2011 10:17 pm
by Asper
Да это так. А зачем тебе это?
Re: Помогите новичку
Posted: Sat Apr 02, 2011 10:32 pm
by Gluk
Asper, цитата
отсюда:
"Потоки виджетов:
Это - отдельные потоки процесса панели, рисующие в битмап, который выводит основной процесс на себя, потокам виджетов дается доступ к графической библиотеке (pixlib?) для упрощения рисования, и возможно средства для векторного рисования. Также виджет может задавать активные области в пределах себя (кнопки), ну и другие сервисы по необходимости. Сам код виджета подгружается из файла, структура которого будет оговорена, и который можно будет создать в fasm и других компиляторах (~других языков)."
Re: Помогите новичку
Posted: Sat Apr 02, 2011 10:43 pm
by Asper
Может быть не париться и сделать их в виде библиотечных файлов, которые поддерживают определённый интерфейс, а уже управляющая программа будет отвечать, за реализацию данного интерфейса?
Re: Помогите новичку
Posted: Sat Apr 02, 2011 10:49 pm
by Serge
Gluk
В твоём случае виджеты надо делать в виде длл. Они позиционно независимы. Ядро обработает релокации и тебе не надо будет думать о базовом адресе кода.
Re: Помогите новичку
Posted: Sat Apr 02, 2011 11:10 pm
by Gluk
Asper, Serge, так уже делает Sorcerer.
Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?
А упавший виджет уронит панель?
А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?
я пока что думаю что ответы будут Да, Да, Нет(?), что меня не вполне устраивает.
мне чем dll даже больше нравится вариант самостоятельных процессов с использованием расшареной памяти (так еще безопаснее)
не говоря уже про то, что dll это что-то сложное, и с привкусом HLL..
Re: Помогите новичку
Posted: Sat Apr 02, 2011 11:20 pm
by Asper
Gluk wrote:Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?
Ты программист, всё в твоих руках.
Если поставишь
то да.
А, если например так
Code: Select all
still:
mcall 23,100
;.....
call UpdateWidgets
jmp still
то нет.
Gluk wrote:А упавший виджет уронит панель?
Он уронит её и в обоих случаях.
Gluk wrote:А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?
С памятью ты ещё намучаешься, если будешь использовать свой подход.
Re: Помогите новичку
Posted: Sat Apr 02, 2011 11:31 pm
by Gluk
Asper wrote:Он уронит её и в обоих случаях.
ну демка, выложенная в соответствующей теме, при падении одного из потоков-панелей не только продолжает работать, но и восстанавливает павшую панель (можно -побаловаться- проверить убиванием панелей ч/з диспетчер). А там как раз одно приложение и несколько потоков.