Board.KolibriOS.org

Official KolibriOS board
It is currently Mon May 20, 2019 5:53 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 44 posts ]  Go to page Previous 1 2 3
Author Message
PostPosted: Tue Sep 27, 2011 3:52 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Вызов может и изящен, а реализация точно нет. После перехода на страничную память приходится делать громоздкий ремаппинг для копирования данных. Скорее надо заново проектировать весь мезанизм IPC.


Top
   
PostPosted: Tue Sep 27, 2011 7:56 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Упаковкой/распаковкой занимается помимо ядра ещё и приложение kpack (kerpack для ядра).


Top
   
PostPosted: Wed Sep 28, 2011 7:01 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Упаковкой занимается kpack, распаковкой - kunpack. Но последняя у меня есть только для винды и без исходиков. Интересно, что kpack весит 14 кил, а kunpack - всего 4.

Кстати, kunpack импортирует (из MSVCRT.dll) следующие функции:
Spoiler: Show
Attachment:
kunpack.png
kunpack.png [ 2.65 KiB | Viewed 5826 times ]


Top
   
PostPosted: Wed Sep 28, 2011 7:06 am 
Kpack который в Колибри как запаковывает, так и распаковывает приложения, а также упаковывает и ядро. При всем при этом занимает 15 Кб (без упаковки).
Процедура распаковки намного проще, чем процедура упаковки - достаточно посмотреть в код.


Top
   
PostPosted: Wed Sep 28, 2011 10:22 am 
Offline

Joined: Mon Sep 26, 2011 3:01 pm
Posts: 33
Mario wrote:
Kpack который в Колибри как запаковывает, так и распаковывает приложения, а также упаковывает и ядро. При всем при этом занимает 15 Кб (без упаковки).
Процедура распаковки намного проще, чем процедура упаковки - достаточно посмотреть в код.

Всё равно переписывать её на си и потом ловить баги - немаленькая война. :( Неужели в виндовых эмуляторах не было сишного распаковщика?


Top
   
PostPosted: Wed Sep 28, 2011 11:55 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
dzavalishin
В unpacker.inc старый lzma распаковщик из 7z. Так что если взять оригинальные исходники должно работать.


Top
   
PostPosted: Wed Sep 28, 2011 12:53 pm 
Offline

Joined: Mon Sep 26, 2011 3:01 pm
Posts: 33
Serge wrote:
dzavalishin
В unpacker.inc старый lzma распаковщик из 7z. Так что если взять оригинальные исходники должно работать.


Я правильно понимаю, что заголовок KPACK файла - это два инта - KPCK и размер непакованного файла? Идёт ли вслед за этим lzma заголовок? (В нём тоже есть размер несжатого файла...)

LZMA compressed file format
---------------------------
Offset Size Description
0 1 Special LZMA properties (lc,lp, pb in encoded form)
1 4 Dictionary size (little endian)
5 8 Uncompressed size (little endian). -1 means unknown size


Top
   
PostPosted: Wed Sep 28, 2011 4:09 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Первые два инта точно. Третий содержит байт флагов. На форуме есть пост diamond-а на эту тему. На счёт lzma заголовка не знаю. Это надо упаковщик смотреть.


Top
   
PostPosted: Wed Oct 12, 2011 1:28 am 
Offline

Joined: Mon Sep 26, 2011 3:01 pm
Posts: 33
Kolibri/kolibri_sys_dispatcher: Unimplemented Kolibri syscall eax = -239

= FFFFFFFFFFFFFF11

что бы это значило? Калькулятор такое позвал. Хотел харакири сделать?


Top
   
PostPosted: Wed Oct 12, 2011 1:31 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Повторить такое удаётся?


Top
   
PostPosted: Wed Oct 12, 2011 10:08 am 
Offline
Site Founder
User avatar

Joined: Sun Aug 08, 2004 8:55 am
Posts: 689
core/syscall.inc wrote:
movzx eax, al

_________________
in code we trust


Top
   
PostPosted: Wed Oct 12, 2011 7:07 pm 
Offline

Joined: Mon Sep 26, 2011 3:01 pm
Posts: 33
mike.dld wrote:
core/syscall.inc wrote:
movzx eax, al

Ах, вот оно что! Спасибо.


Top
   
PostPosted: Wed Oct 19, 2011 6:04 am 
Offline

Joined: Sat Aug 13, 2011 1:48 pm
Posts: 49
mike.dld wrote:
core/syscall.inc wrote:
movzx eax, al

Калькулятор надо подправить. В документации сказано, что номер функции нужно передавать в eax, а не в al. Хотя, да, в обработчике прерывания 0x40 есть "movzx eax, al" (но я так думаю это чтобы процесс (а в некоторых случаях и ядро вместе с ним) не падал из-за некорректного вызова, потому что размер таблицы servetable2 = 256*4 байт).

З.Ы. Если когда-нибудь будет использоваться более 256 функций (не дай бог :evil:) придётся переписывать все программы, использующие этот грязный хряк хак.


Top
   
PostPosted: Wed Oct 19, 2011 9:47 am 
Если в старших битах гарантированно нули, то не придется, если другое - ну, ССЗБ экономия.


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

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:  
cron
Powered by phpBB® Forum Software © phpBB Limited