A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (2): [1] 2 »   

> Без описания
BohdanT Администратор
Отправлено: 29 Апреля, 2010 - 13:34:19
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




В репозитории находится первая работоспособная версия

если кто то хочет помочь, то теперь необходимы аналоги функций windows-ких dll на обероне
 
 Top
MaDzi
Отправлено: 29 Апреля, 2010 - 23:07:45
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




Пиши подробней. Какие функции необходимо реализовать в первую очередь. А то у винды АПИ очень жирный.

Нет-ли решений в Win32.Kernel32.Mod ???
 
 Top
BohdanT Администратор
Отправлено: 30 Апреля, 2010 - 14:19:33
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Цитата:
Пиши подробней. Какие функции необходимо реализовать в первую очередь. А то у винды АПИ очень жирный.

Это точно Улыбка

Цитата:
Нет-ли решений в Win32.Kernel32.Mod ???

Да есть, заголовки функций, типы и константы - это уже выполненый кусок работы.

Вобщем как я представляю задачу: нужно запустить что то полезное для всех.
На роль кандидата предлагаю SQLite (может есть лучше кандидат?)
Тут нужно сразу выбрать нормальную сборку и положить ее в репозиторий, т.к. от версии к версии количество импортируемых функций меняется.

Таким образом нам нужно реализовать только то, что использует sqlite3.dll - порядка 60 простеньких функций.
PS: ха, нужно проверить не подключаются во время исполнения еще какие либо функции.. А?!

http://www.sqlite.org/download.html


KERNEL32.dll пишет:

AreFileApisANSI
CloseHandle
CreateFileA
CreateFileW
DeleteCriticalSection
DeleteFileA
DeleteFileW
EnterCriticalSection
FlushFileBuffers
FormatMessageA
FormatMessageW
FreeLibrary
GetCurrentProcessId
GetCurrentThreadId
GetDiskFreeSpaceA
GetDiskFreeSpaceW
GetFileAttributesA
GetFileAttributesW
GetFileSize
GetFullPathNameA
GetFullPathNameW
GetLastError
GetProcAddress
GetSystemTime
GetSystemTimeAsFileTime
GetTempPathA
GetTempPathW
GetTickCount
GetVersionExA
InitializeCriticalSection
InterlockedCompareExchange
LeaveCriticalSection
LoadLibraryA
LoadLibraryW
LocalFree
LockFile
LockFileEx
MultiByteToWideChar
QueryPerformanceCounter
ReadFile
SetEndOfFile
SetFilePointer
Sleep
UnlockFile
WideCharToMultiByte
WriteFile


msvcrt.dll пишет:

atoi
free
isalnum
isspace
localtime
malloc
memcpy
memmove
memset
qsort
realloc
strcmp
strncmp
tolower
 
 Top
BohdanT Администратор
Отправлено: 30 Апреля, 2010 - 20:23:59
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Первая работоспособная версия. SQLite отрабатывает!

Поздравляю всех с наступающими!
 
 Top
MaDzi
Отправлено: 02 Мая, 2010 - 01:36:22
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




Начал я потрошить kernel32.dll, а там 829 функций. Улыбка
Вот подумалось, может вместо .dll лучше .so (elf) поддерживать ?
Под линух тоже достаточно полезных программ есть...
 
 Top
BohdanT Администратор
Отправлено: 02 Мая, 2010 - 09:30:25
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




MaDzi пишет:
Начал я потрошить kernel32.dll, а там 829 функций. Улыбка
Под линух тоже достаточно полезных программ есть...

Если реализовать все 829 функций - WinE получится Подмигивание
Я предлагаю реализовать только те функции, которые требуют необходимые нам приложения.

Цитата:
Вот подумалось, может вместо .dll лучше .so (elf) поддерживать ?

Легко(с эльфами уже разбирался). Но только зачем все сразу? Давайте одно закончим.

Я там начал глядеть, предлагаю поступить следующим образом. Для начала реализовать функции из msvcrt.dll - и попробовать как будет работать.

Модули "зеркала" предлагаю называть с приставкой WIN (WINmsvcrt, WINKernel32).
Алгоритм работы будет следующим образом: сначало проверяем есть ли функция в модуле
WINmsvcrt, если нет, то импортим из винды.
(Добавление)
PS: Кстати, Томас Фрей предложил запускать видео-кодеки - на мой взгляд тоже очень интересное применение
 
 Top
MaDzi
Отправлено: 02 Мая, 2010 - 11:48:15
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




Ok.

видео-кодеки, как мне кажется, идея занимательная, но не полезная. Ведь у А2 свой принцип работы с кодеками. Так что проще будет переписать кодеки с Си.
 
 Top
MaDzi
Отправлено: 03 Мая, 2010 - 20:19:27
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




Первая версия.

Реализовано

malloc
realloc
free
memcpy
memmove
memset
isalnum
isspace

Типы вынес в отдельный файл, чтобы было удобно ссылаться на них.
Также вынес отладочную функцию, чтобы видеть что идёт вызов функций из dll.
Скачать файл: windll.rev2.zip
Скачан раз: 418

(Отредактировано автором: 03 Мая, 2010 - 21:35:32)

 
 Top
BohdanT Администратор
Отправлено: 03 Мая, 2010 - 23:21:33
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Сейчас попробую что то проверить.

Нужно писать везде {WINAPI}, для этого необходимо подключать модуль SYSTEM
(Добавление)

Как показала практика "void * ptr" не соответствует PVOID* = POINTER TO ARRAY OF CHAR;

дело в том, что в обероновском массиве вначале техническая информация содержится.
т.е. правильно писать SYSTEM.ADR(buf[0]), по этому я думаю, что лучше передавать в процедуру сразу адресс (или SYSTEM.ADDRES или просто LONGINT)
(Добавление)
В функции memcpy, есть строка
srclen := LEN (src^);
я не уверен, что она будет работать с Си-шными массивами.
Я думал просто вызвать SYSTEM.MOVE и будь что будет Огорчение
(Добавление)
На счет связаного списка по управлению памяти - согласен.

на счет функции realloc:
"The function may move the memory block to a new location"
т.е. нужно делать еще SYSTEM.MOVE перед освобождением старого блока.

И я все таки думаю, что лучше использовать Heaps.NewSys для выделения памяти, это вытекает из особенностей POINTER TO ARRAY OF CHAR; вдруг где то да всплывет.

Наверное нужно все таки сделать тестовую DLL для отладки данных функций.
 
 Top
MaDzi
Отправлено: 04 Мая, 2010 - 07:43:53
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




Зачем везде писать {WINAPI} ? Я так понимаю, что это пишется только для функций из внешних библиотек dll (например в Win32.kernel32.mod), а для встроенных функций этого писать не нужно.

Хотелось бы обойтись без SYSTEM.

На счёт массивов буду проверять.

Чем меньше будет платформенно-зависимого кода - тем лучше.

Буду пробывать с dll.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« ActiveOberon »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0147]     [ Gzipped ]