Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Jun 21, 2021 6:34 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 1140 posts ]  Go to page Previous 18 9 10 11 1276 Next
Author Message
PostPosted: Wed Feb 17, 2010 12:17 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Ничто не мешает сделать эти функции на ассемблере и залить на SVN в папку SDK, чтобы каждый кому они понадобятся не изобретали их снова.
Quote:
с математическими функциями (fsin, fcos, ...)

Математические функции находящиеся в библиотеке libm, а не libC, и так реализованы на ассемблере. Просто над ними сделана обёртка для передачи/получения параметров в стиле C. Поэтому нужно просто перекопировать эти функции из ассемблера AT&T в ассемблер FASM.
Quote:
для работы со строками (strcpy, strcmp, strcat, strncmp, atoi, atof, sprintf, ...)

Эти функции не требуют системных вызовов OS и также прекрасно могут быть сделаны на ассемблере, тем более, что в ядре KolibriOS часть из них уже реализована для внутренних нужд ядра. К тому же strcpy/memmove(лучше использовать её) можно сделать не только через rep movsd, но и через MMX/SSE.
Quote:
с памятью (malloc, free, ...)

В ядре KolibriOS Serge реализовал на ассемблере метод DougLea для выделения малых участков памяти из кучи. Поэтому реализацию этого метода можно взять из ядра.

Quote:
Было бы неплохо иметь динамическую libc.obj, экспортируемые функции которой можно было бы использовать, как из программ на ЯВУ, так и ассемблере.

Я тоже так думаю, только лучше разбить функции по группам, чтобы из-за нескольких функций не грузить все, как это происходит в libC.

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Top
   
PostPosted: Thu Feb 18, 2010 7:49 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Mario
Mario wrote:
Это игры. Эмулятор тоже не компилятор.
Это был ответ на вопрос:
Mario wrote:
Как и зачем портировать в Колибри библиотеку, которую в самой Колибри не собрать ничем...
В основновном используется для портирования Сишного софта в Колибри.
Mario wrote:
Если уж портируется библиотека то логично, что должен быть инструмент который ее использует.
Предлагаешь портировать gcc?

Albom
Мысль интересная. Предложение andrew_programmer'а разбить функции на группы и писать на ассемблере тоже кажется довольно резонным.


Top
   
PostPosted: Fri Feb 19, 2010 3:18 am 
Online
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5478
Albom
Не помогло.

К чему это всё. Сейчас многие демки заливают фон окна, хотя рисуют на весь его размер. Из-за этого при активации/деактивации окна оно сильно моргает. Проблема в том, что приложение рисует _почти_ на весь размер окна из-за того, что высота скина может быть разной.
Выберете скин окна, в котором высокий заголовой - демка будет залазить снизу на ободок окна, слишком узкий - активное содержимое демки не дойдёт до нижнего ободка окна. Потому если фон прозрачный, часть окна снизу будет прозрачной, если фон залит - будет эта часть окна просто залитой.
Может и не столь важно, но, просмотрев разные версии Колибри (почти все версии), понимаешь что из таких вещей складывается отношение к ОС, такие же банальные вещи, как "показывать или нет @ процессы", "не капсом набранное меню" и т.д.
К чему я веду, надо это исправить. Если никто не возмёться, придёться напрячься и сесть за асм мне.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Fri Feb 19, 2010 1:13 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Для превращения Leency в ассемблерщика я даже согласен ничего не менять в демках. :lol:


Top
   
PostPosted: Fri Feb 19, 2010 3:09 pm 
Offline

Joined: Thu Feb 18, 2010 9:16 pm
Posts: 6
andrew_programmer wrote:
Ничто не мешает сделать эти функции на ассемблере и залить на SVN в папку SDK, чтобы каждый кому они понадобятся не изобретали их снова.


Firstly, sorry that I can't write in Russian - but I can read though.

How about idea to port FASMLIB to KOS? I'v took a look into it, and if I understood correctly, all is needed is to port src/_linux, src/_windows "examples" to Kolibri by reimplementing alloc_heap/free_heap/realloc_heap, create/open/seek/read/tell and other platform-depended stuff.

Please correct me if mistaken.

Any comments about FASMLIB?


Top
   
PostPosted: Fri Feb 19, 2010 7:46 pm 
Online
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5478
Asper wrote:
Для превращения Leency в ассемблерщика я даже согласен ничего не менять в демках. :lol:
Ассемблерщик из меня не получится, проверено. Я, конечно, могу немного побыдлокодить, но лучше б я занялся, чем-то, что ближе мне, а тот, кому ближе ассемблер занялся бы демками.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Fri Feb 19, 2010 9:18 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 907
Недавно переводил часть библиотеки 'fasmlib'. Ниже в архиве получившиеся файлы. Если есть желание продолжить начатую работу, данные файлы могут помочь.


Recent transfer of the libraries 'fasmlib'. Below in the archive the resulting file. If there is a desire to continue this work, these files may help.


Attachments:
str_lib.7z [14.7 KiB]
Downloaded 137 times
Top
   
PostPosted: Wed Feb 24, 2010 1:21 am 
Online
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5478
Надо порезать путь, допустим, /hd1/2/Games/Heroes/ на части.
Code:
void Func()
{
   int ii, jj=0, x_fol_btn=235;
   char folder[256];
   for (ii=0; ii<=strlen(#path); ii++;)
   {
      folder[jj]=path[ii];
      IF (path[ii]=='/')
      {
         WriteDebug(#folder);
         folder='';
         jj=0;
      }
   }
}

Этот код на доску выводит влякую фигню :(
Где ошибка или как более правильно реализовать?

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Wed Feb 24, 2010 3:37 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1449
Leency,
для начала исправь три явных ошибки в цикле:
1) инкремент ii++ есть, а jj++ нигде в коде нет;
2) условие в заголовке цикла: поставь ii < (вместо ii<=), иначе будет лишний прогон в цикле;
3) инкремент в заголовке цикла: убери точку с запятой после ii++


Top
   
PostPosted: Mon Mar 01, 2010 12:51 am 
Возможно кому-нибудь, когда-нибудь, зачем-нибудь и пригодится:
Шесть советов по написанию более понятного программного кода
Все-таки IBM просто так не постит.


Top
   
PostPosted: Sun Mar 14, 2010 10:15 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
кто знает, сколько байт займут команды "mov esi,1" и "jmp smth"? там ведь еще дальность прыжка учесть надо, или это у "ret"?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sun Mar 14, 2010 10:28 pm 
Offline

Joined: Thu Jan 26, 2006 8:47 pm
Posts: 284
mov esi, 1 = 5 байт, т.к 1 будет как dword (BE XXXXXXXX)
Лучше xor esi, esi и inc esi, что все вместе займет 3 байта
Короткий прыжок = 2 байта (EB XX), длинный = 5 (E9 XXXXXXXX)


Top
   
PostPosted: Sun Mar 14, 2010 10:52 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
спасибо =)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sun Mar 14, 2010 11:16 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
на "mov ecx,dword[tids+esi*8]" приложение вылетает с page fault, хотя "mov [tids+8*esi],eax" работает нормально.. как решить проблему?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Mon Mar 15, 2010 1:42 am 
Может tids поменялся или esi слишком большое значение содержит - выведи на доску отладки перед вызовом.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1140 posts ]  Go to page Previous 18 9 10 11 1276 Next

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