Gluk
Как это после компиляции?
Помогите новичку
Gluk
Код будет работать правильно до первого обращения к данным.
Код будет работать правильно до первого обращения к данным.
Asper: "Как это после компиляции?" - мы скомпилировали код в бинарный файл, потом загрузили в память другого процесса, начиная с адреса, не равного нулю, где и передали уму бразды правления.
Serge, то есть никаких проблем с переходами (в т.ч. дальними) и вызовами функций не будет?
Serge, то есть никаких проблем с переходами (в т.ч. дальними) и вызовами функций не будет?
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Gluk
Значит всё-таки после загрузки в память, тогда понятно.
Значит всё-таки после загрузки в память, тогда понятно.
Gluk
Если ты опишешь ситуацию подробно будет проще дать ответ.
С ветвлениями проблем не будет точно. С переходами jmp и call проблем не будет если только это не переходы по абсолютному адресу или косвенные переходы/вызоы call [label] jmp [label]. Но всё это будет замечательно работать до первого обращения к глобальным данным. То есть для среднестатистического кода шансы равны нулю.
Если ты опишешь ситуацию подробно будет проще дать ответ.
С ветвлениями проблем не будет точно. С переходами jmp и call проблем не будет если только это не переходы по абсолютному адресу или косвенные переходы/вызоы call [label] jmp [label]. Но всё это будет замечательно работать до первого обращения к глобальным данным. То есть для среднестатистического кода шансы равны нулю.
Serge, большое спасибо за ответ, именно такая информация мне нужна была. Более конкретно спросить не мог, так как задача, как я ее понимаю, именно такой общности.
Для победы над обращениями к памяти нужно добавлять к адресу данных адрес начала размещения загруженного в память кода?
Для победы над обращениями к памяти нужно добавлять к адресу данных адрес начала размещения загруженного в память кода?
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
org в помощь.
Asper, если я правильно понял что делает эта директива, она не подойдет ввиду того, что при компиляции неизвестен адрес, по которому будет загружен код, и размещены данные
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Да это так. А зачем тебе это?
Asper, цитата отсюда:
"Потоки виджетов:
Это - отдельные потоки процесса панели, рисующие в битмап, который выводит основной процесс на себя, потокам виджетов дается доступ к графической библиотеке (pixlib?) для упрощения рисования, и возможно средства для векторного рисования. Также виджет может задавать активные области в пределах себя (кнопки), ну и другие сервисы по необходимости. Сам код виджета подгружается из файла, структура которого будет оговорена, и который можно будет создать в fasm и других компиляторах (~других языков)."
"Потоки виджетов:
Это - отдельные потоки процесса панели, рисующие в битмап, который выводит основной процесс на себя, потокам виджетов дается доступ к графической библиотеке (pixlib?) для упрощения рисования, и возможно средства для векторного рисования. Также виджет может задавать активные области в пределах себя (кнопки), ну и другие сервисы по необходимости. Сам код виджета подгружается из файла, структура которого будет оговорена, и который можно будет создать в fasm и других компиляторах (~других языков)."
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Может быть не париться и сделать их в виде библиотечных файлов, которые поддерживают определённый интерфейс, а уже управляющая программа будет отвечать, за реализацию данного интерфейса?
Gluk
В твоём случае виджеты надо делать в виде длл. Они позиционно независимы. Ядро обработает релокации и тебе не надо будет думать о базовом адресе кода.
В твоём случае виджеты надо делать в виде длл. Они позиционно независимы. Ядро обработает релокации и тебе не надо будет думать о базовом адресе кода.
Asper, Serge, так уже делает Sorcerer.
Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?
А упавший виджет уронит панель?
А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?
я пока что думаю что ответы будут Да, Да, Нет(?), что меня не вполне устраивает.
мне чем dll даже больше нравится вариант самостоятельных процессов с использованием расшареной памяти (так еще безопаснее)
не говоря уже про то, что dll это что-то сложное, и с привкусом HLL..
Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?
А упавший виджет уронит панель?
А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?
я пока что думаю что ответы будут Да, Да, Нет(?), что меня не вполне устраивает.
мне чем dll даже больше нравится вариант самостоятельных процессов с использованием расшареной памяти (так еще безопаснее)
не говоря уже про то, что dll это что-то сложное, и с привкусом HLL..
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Ты программист, всё в твоих руках.Gluk wrote:Я правильно понимаю, что в этом случае виджеты будут неактивны до наступления события, и не смогут работать синхронно?
Если поставишь
Code: Select all
still:
mcall 10
;.....
jmp still
А, если например так
Code: Select all
still:
mcall 23,100
;.....
call UpdateWidgets
jmp still
Он уронит её и в обоих случаях.Gluk wrote:А упавший виджет уронит панель?
С памятью ты ещё намучаешься, если будешь использовать свой подход.Gluk wrote:А я смогу обеспечить один экземпляр кода виджета для нескольких экземпляров виджета, не лишая его возможности использования локальной памяти?
ну демка, выложенная в соответствующей теме, при падении одного из потоков-панелей не только продолжает работать, но и восстанавливает павшую панель (можно -побаловаться- проверить убиванием панелей ч/з диспетчер). А там как раз одно приложение и несколько потоков.Asper wrote:Он уронит её и в обоих случаях.
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Who is online
Users browsing this forum: No registered users and 13 guests