Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вс дек 17, 2017 5:00 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 203 сообщения ]  На страницу Пред. 110 11 12 13 14 След.
Автор Сообщение
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Ср май 14, 2014 10:21 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
Приветствую, почему-то не получется из С-- обратиться к SysFn68.22, не подскажете где ошибаюсь?

char *buff_name="SHELLY";
result=createMemoryBuffer(buff_name, 1024*16, SHM_OPEN_ALWAYS);
closeMemoryBuffer(buff_name);

int createMemoryBuffer(dword name, int size, dword flags) {
$mov eax,68;
$mov ebx,22;
ECX=name;
EDX=size;
ESI=flags;
$int 0x40
return EDX;
}
void closeMemoryBuffer(dword ECX) {
$mov eax,68;
$mov ebx,23;
$int 0x40
}

Долго боролся получая ошибку 33(Неправильные параметры), теперь имею 30(Не хватает памяти, что сомнительно тк её 4гб).

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Ср май 14, 2014 10:42 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
68.11 ?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Ср май 14, 2014 11:11 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
Mario_r4 писал(а):
68.11 ?

Разьве они связаны? В описании прописаны 12 и 13 только как связанные...

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Ср май 14, 2014 11:35 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1082
Alexus писал(а):
Разьве они связаны? В описании прописаны 12 и 13 только как связанные...
http://websvn.kolibrios.org/filedetails ... #line-3019
Цитата:
Замечания:
* Предварительно следует инициализировать кучу процесса вызовом
подфункции 11.
http://websvn.kolibrios.org/filedetails ... #line-3003
Цитата:
Remarks:
* Before this call one must initialize process heap by call to
subfunction 11.


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Ср май 14, 2014 11:53 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
Все получилось, спасибо, надо поправить в Wiki, там этот момент отсуствует.

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 12:17 am 
Не в сети

Зарегистрирован: Вт апр 12, 2011 11:19 pm
Сообщения: 1077
Alexus писал(а):
Все получилось, спасибо, надо поправить в Wiki, там этот момент отсуствует.

Где надо поправить? Да и обертки для функций работы с память для С-- давно уж как написаны http://websvn.kolibrios.org/filedetails ... ib%2Fmem.h

_________________
я лишь учусь


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 9:41 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
В wiki которая первая выходит в гугле по запросу kolibrios api:
http://wiki.kolibrios.org/wiki/SysFn68/ ... 1.81.D0.B0.

Эти обертки я видел, для 22 и 23 подфункции там нет.

P.S. Нашел "You can find the latest API documentation in /kernel/docs/ in the SVN repository (WebSVN)" , извиняюсь. Но оберток все равно нет для 22 и 23 =).

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 1:24 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
Есть ли где-нибудь примеры использования именованной области на С--? Вроде все правильно сделано и EDX=0(ошибки нет), но при этом EAX вместо адреса именованной области отдает 0, что значит ошибку =\

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 2:05 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1082
Alexus, ты бы лучше привёл конкретный код.
Пока что, если исходить из кода, приведённого несколькими постами выше:
Alexus писал(а):
return EDX;
скорее всего будет преобразовано в
Код:
mov eax, edx

Цитата:
при создании новой области (SHM_CREATE или SHM_OPEN_ALWAYS):
edx = 0 - успех, иначе - код ошибки

Ну вот и получается: успех -> edx=0 -> mov eax, edx -> eax=0


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 5:04 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
Код: http://pastebin.com/PJjdgPEc , извиняюсь за бардак.

В EAX всегда идет 0, или я чего-то не понимаю или я запутался в указателях =\. Вероятнее всего второе..

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 5:31 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1082
Код:
        error=EDX;
; .......................
        return error;

Код:
mov [error], edx
; .......................
mov eax, [error]


Если область создана успешно, то edx=0.
Если edx=0, то после error=EDX в error тоже будет 0.
Если error=0, то после return error в eax тоже будет 0.


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 5:53 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 02, 2010 12:37 pm
Сообщения: 64
Да, но если область создана то до return её адрес будет в eax,
откуда он записывается в buff,
если ошибки нет error=0, то адрес на который указывает buffer меняется на содержащийся в buff.

Но в итоге при error=0, я имею адрес буфера=0

_________________
*.*


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт май 15, 2014 7:43 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1082
Может быть, на самом деле, error<>0?

Код:
ECX=*name;
превращается в
Код:
8B4D14                   mov     ecx,[ebp+14h]
0FBE09                   movsx   ecx,[ecx]
последняя команда знаково расширяет байт(0FBE09) по адресу в ecx

в int2str:
Код:
return str;
превращается в
Код:
0FBE8500FFFFFF           movsx   eax,[ebp-100h]
даже если бы возвращался адрес, возвращать адрес на стеке — плохая идея

ну и дальше пошло-поехало :)


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Вс дек 13, 2015 4:36 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4227
Базовая поддержка коллекций строк (lib/collections.h)
Коллекции похожи на массивы. Работает все до безобразия просто.

Код:
void main()
{   
   collection s;
   s.init(4096);
   s.add("lorem");
   s.add("ipsum");
   s.add("1234566");
   debugln(s.get(0)); //-> "lorem"
   debugln(s.get(1)); //-> "ipsum"
   debugln(s.get(2)); //-> "123456"
}


Ограничения: максимум 4096 элементов, нужно знать размер буфера заранее.

Пример есть в папке CMM/examples/collections.c

_________________
Через тернии к звездам


Вернуться к началу
 Заголовок сообщения: Re: C--
СообщениеДобавлено: Чт янв 07, 2016 7:04 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4227
+ lib/menu.h
+ examples/menu.c

Стандартный компонент меню и пример использования.


Вложения:
menu.gif
menu.gif [ 188.09 КБ | 1897 просмотров ]

_________________
Через тернии к звездам
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 203 сообщения ]  На страницу Пред. 110 11 12 13 14 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB