Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Apr 20, 2019 2:05 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 21 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Fri Dec 07, 2018 10:12 am 
Offline

Joined: Sun Aug 09, 2015 3:41 pm
Posts: 109
Quote:
Не подскажете как сэмулировать состояние write failed для какого-нибудь файла.

Забить /rd/1 под завязку (например логом board). Писать скомпилированный файл будет некуда -> Write failed


Top
   
PostPosted: Wed Dec 26, 2018 10:08 am 
Offline

Joined: Thu Aug 04, 2016 10:43 am
Posts: 22
Появились еще вопросы:
1) lib_init нужна для загрузки импортов самого импортированного файла (и только?)? Зачем ей передаются ссылки на функции работы с памятью?
2) код для загрузки объектной библиотеки присутствует в каждой такой библиотеке - вместо того, чтобы единожды пробрасываться из исполняемого модуля (подобно тому как неизвестно зачем пробрасываются функции работы с памятью)
3) в исполняемом модуле не сохраняется дерево всех загруженных модулей так, чтоб LoadLibrary грузило бы в адресное пространство объектный модуль ТОЛЬКО ЕДИНОЖДЫ командой mcall SF_SYS_MISC,SSF_LOAD_DLL,library_path, а в остальных случаях просто возвращало уже готовый указатель на таблицу экспорта нужного модуля (или "mcall SF_SYS_MISC,SSF_LOAD_DLL" - сама "умная" и не грузит модуль дважды, а просто возвращает указатель).
4) нельзя ли сделать так чтоб некоторые объектные модули (хотя бы 1) пробрасывались в адресное пространство исполнимого файла по умолчанию (аналогично пробросу kernel32.dll & ntdll.dll они всегда присутствуют в загруженых модулях процесса Windows)? (это способ еще раз улучшить описываемое в 2) - чтоб в исполняемых модулях код загрузки библиотек не дублировался, да еще и не дублировался в самих исполнимых файлах).
5) реестр - централизованное хранилище может быть удобнее ini файлов (не заменой, а дополнением) (случай когда многим приложениям надо хранить общие настройки) - никто не говорит, что реализовывать его в формате текстовом, напротив можно в виде бинарной базы данных распределенной между многими файлами.
6) и интерфейсы(в добавление к реестру) - неплохо пробрасывать из объектных модулей не отдельные процедуры, а объекты (или интерфейсы).(и ХЛЛльщикам будет попроще, особенно если увидят "родные" интерфейсы с родными GUID и методами). для начала хватило бы 2х IUnknown и IClassFactory

Первые 3 - это вопросы. Остальное так, размышления.
и еще вопросы:
переменные среды - есть в kolibri?
есть ли возможность указать в fasm внутри колибри не во время компиляции путь до папки include? А если быть честным с собой, то - возможность указать сразу несколько путей разделенных точкой с запятой? или это только через ini файл?
т.к. без возможности указывать папку включения (сразу несколько папок) fasm внутри колибри будет адски неудобен для разработки из под самой колибри.


Top
   
PostPosted: Thu Dec 27, 2018 5:29 am 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 410
ProMiNick wrote:
1) lib_init нужна для загрузки импортов самого импортированного файла (и только?)?
Any initialization a library needs, e.g. libimg. Or may be you want to precompute tables of magic numbers.
ProMiNick wrote:
Зачем ей передаются ссылки на функции работы с памятью?
It is often easier to develop and debug a library on, say, Linux. Not using system calls helps here a lot. I don't think this is because of possible userspace allocators.
ProMiNick wrote:
2) код для загрузки объектной библиотеки присутствует в каждой такой библиотеке - вместо того, чтобы единожды пробрасываться из исполняемого модуля (подобно тому как неизвестно зачем пробрасываются функции работы с памятью)
Code:
;;===========================================================================;;
lib_init: ;//////////////////////////////////////////////////////////////////;;
;;---------------------------------------------------------------------------;;
;? Library entry point (called after library load)                           ;;
;;---------------------------------------------------------------------------;;
;> eax = pointer to memory allocation routine                                ;;
;> ebx = pointer to memory freeing routine                                   ;;
;> ecx = pointer to memory reallocation routine                              ;;
;> edx = pointer to library loading routine                                  ;;
;;---------------------------------------------------------------------------;;
;< eax = 1 (fail) / 0 (ok) (library initialization result)                   ;;
;;===========================================================================;;
        mov     [mem.alloc], eax
        mov     [mem.free], ebx
        mov     [mem.realloc], ecx
        mov     [dll.load], edx
        mov     [DNSrequestID], 1
        xor     eax, eax
        ret

3,4) http://board.kolibrios.org/viewtopic.php?f=1&t=1839


Top
   
PostPosted: Thu Dec 27, 2018 8:33 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 431
5,6) - время показало ущербность и излишнюю сложность реализаций


Top
   
PostPosted: Thu Dec 27, 2018 2:35 pm 
Offline

Joined: Thu Aug 04, 2016 10:43 am
Posts: 22
Еще вопрос: может ли программа быть "не джентельменом" и модифицировать саму себя(т.е. модифицировать исполнимый файл, образ которого сейчас в памяти на исполнение)? это было бы еще удобнее чем ини файлы - антивирусов то нет)


Top
   
PostPosted: Fri Dec 28, 2018 12:06 am 
Offline
Mentor
User avatar

Joined: Mon Oct 19, 2009 10:58 am
Posts: 410
ProMiNick wrote:
Еще вопрос: может ли программа быть "не джентельменом" и модифицировать саму себя(т.е. модифицировать исполнимый файл, образ которого сейчас в памяти на исполнение)? это было бы еще удобнее чем ини файлы - антивирусов то нет)
I implemented high score table in my snake game this way. However kpack'ing breaks this logic and therefore I switched to a separate file.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 21 posts ]  Go to page Previous 1 2

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