Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср дек 19, 2018 10:51 am

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




Начать новую тему  Ответить на тему  [ 1115 сообщений ]  На страницу Пред. 150 51 52 53 5475 След.
Автор Сообщение
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вт апр 09, 2013 9:26 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
SVN r.3462 решает проблему с падением.

Leency писал(а):
Проблема у меня при указании параметра Х. Если он 0 или 2 рисует такое. При 10 чёрный фон ("надписи" не видно). При 36, как и должно быть - падает. QEMU, последнее ядро.

А ты выведи не "-----", а допустим "AAAAAA" и сразу поймешь, что происходит искажение вывода, если не править еще и ф.65. А если не править одновременно размер буфера выделяемый по malloc, то возможно получить page fault как для ф.4, так и для ф.65.

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вт апр 09, 2013 9:30 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
Я ни разу не вводил "-----". В теме раз 5 сверкал исходник и тебе его ещё пару раз кидал, мог бы хоть раз обратить внимание на текст.

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вт апр 09, 2013 9:55 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Leency писал(а):
Я ни разу не вводил "-----". В теме раз 5 сверкал исходник и тебе его ещё пару раз кидал, мог бы хоть раз обратить внимание на текст.

Тогда я не понимаю чего ты от меня хочешь?
Цитата:
Продолжаю мучить 4 функцию. Переписал на православный асм и всё равно падает:

В моем ассемблерном исходнике который я написал по мотивам твоего кода, выложенного в самом первом сообщении, проблем с выводом не наблюдается. Если ты в нем получишь те эффекты, которые ты пытаешься показать, то я буду разбирать ситуацию.
Вложение:
f4img.7z [6.97 КБ]
47 скачиваний

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пт апр 12, 2013 6:52 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
Смотрю семинар по ОС деву от главного разработчика ядра ReactOS Брагина и кажется до меня начинает доходить что есть квант времени для процесса.

Рассмотрим случай, когда мы имеем два процесса запущенных одновременно и выводящих в консоль цифры от 1 до 9000.
Ровно через 3 секунды вывод останавливается. Так вот программа, которая будет иметь больший квант времени напечатает больше цыфр?

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пт апр 12, 2013 6:59 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Цифры - от 1 до 9. 1 до 9000 - это числа. :)


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пт апр 12, 2013 7:08 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4879
SoUrcerer писал(а):
Цифры - от 1 до 9. 1 до 9000 - это числа. :)
Возьми с полки пирожок :)

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


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пт апр 12, 2013 7:53 pm 
Не в сети

Зарегистрирован: Сб дек 08, 2012 8:45 pm
Сообщения: 62
Leency писал(а):
Смотрю семинар по ОС деву от главного разработчика ядра ReactOS Брагина и кажется до меня начинает доходить что есть квант времени для процесса.

Рассмотрим случай, когда мы имеем два процесса запущенных одновременно и выводящих в консоль цифры от 1 до 9000.
Ровно через 3 секунды вывод останавливается. Так вот программа, которая будет иметь больший квант времени напечатает больше цыфр?


ну... как сказать... во первых кванты обычно одинаковые, а приоритет влияет на чистоту выдачи кванта
во вторых кванты очень мелкие, так что разница не настолько уж и ощутима за 3 секунды то.
но теоретически таки да, если я конечно правильно понимаю, что процессы запущены из одного исполняемого файла. если нет - то тут ещё и насколько коды программ оптимальны оттносительно друг-друга (т.е. можно ли сказать что один оптимальнее другого)

_________________
Муравьиным спиртом советую натереть!


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пн апр 22, 2013 12:37 am 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1499
Можно ли сейчас узнать размер свободного пространства на жёстком диске?
Здесь http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Fdocs%2Fsysfuncr.txt#line-3038 написано, что можно:
Спойлер: Показать
Код:
  * для жёсткого диска: база и раздел определяются подфункциями 7 и 8
    функции 21:
    * eax = 0 (успех)
    * ebx = общее число кластеров
    * ecx = число свободных кластеров
    * dword [fileinfo] = размер кластера (в байтах)

А здесь http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2Ffs.inc#line-175 вот так:
Спойлер: Показать
Код:
  fs_info:                      ;start of code - Mihasik
        push    eax
        cmp     [eax+21], byte 'r'
        je      fs_info_r
        cmp     [eax+21], byte 'R'
        je      fs_info_r
        mov     eax, 3          ;if unknown disk
        xor     ebx, ebx
        xor     ecx, ecx
        xor     edx, edx
        jmp     fs_info1
  fs_info_r:
        call    ramdisk_free_space;if ramdisk
        mov     ecx, edi        ;free space in ecx
        shr     ecx, 9          ;free clusters
        mov     ebx, 2847       ;total clusters
        mov     edx, 512        ;cluster size
        xor     eax, eax        ;always 0
  fs_info1:
        pop     edi
        mov     [esp+36], eax
        mov     [esp+24], ebx    ; total clusters on disk
        mov     [esp+32], ecx    ; free clusters on disk
        mov     [edi], edx       ; cluster size in bytes
        ret                      ;end of code - Mihasik

Для рамдиска-то работает:
Спойлер: Показать
Изображение

Пока нового API нет, хотел хотя бы так попробовать.


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Чт май 02, 2013 5:42 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 454
Мне нужно, что бы fasm вкомпилил процедуры типа proc - endp. Загвоздка вот в чём: в самой проге они не используются и потому fasm их просто выкидывает. А мне нужно что бы вкомпилил.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Чт май 02, 2013 6:21 pm 
Не в сети

Зарегистрирован: Вс окт 30, 2011 6:43 pm
Сообщения: 1499
GerdtR, можно написать вместо
Код:
proc MyProc
ret
endp
просто метку
Код:
MyProc:
ret


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Пт май 03, 2013 4:56 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт май 08, 2007 12:44 am
Сообщения: 346
GerdtR писал(а):
Загвоздка вот в чём: в самой проге они не используются и потому fasm их просто выкидывает. А мне нужно что бы вкомпилил.

Скомпиль их отдельно в бинарь, а потом включи директивой file. Только про смещения не забывай.

_________________
Разработчик языка программирования Кантор


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Сб май 04, 2013 9:03 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 454
Слыхал, что 68.19 умеет грузить PE либы. Попробовал - не получилось( Вообще есть какой способ PE либу загрузить?

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вс май 05, 2013 10:53 am 
Не в сети

Зарегистрирован: Сб дек 08, 2012 8:45 pm
Сообщения: 62
GerdtR писал(а):
Слыхал, что 68.19 умеет грузить PE либы. Попробовал - не получилось


Либы - т.е. .lib? Имеются ввиду .obj , если я правильно помню
+ ещё какие зависимости у этой либы

Цитата:
Вообще есть какой способ PE либу загрузить?

Ну... можно и свой загрузчик сделать, а если имеется ввиду таки .dll то порыться в коде раеактос или вайн, скопировать тамошний загрузчик

_________________
Муравьиным спиртом советую натереть!


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

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 454
Да, .dll, вроде виндовых. Т. е. библиотеки в PE формате сама Колибри грузить не умеет?

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
 Заголовок сообщения: Re: Помогите новичку
СообщениеДобавлено: Вс май 05, 2013 1:32 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
GerdtR
viewtopic.php?f=2&t=32&start=175
Serge писал(а):
Добро пожаловать в DLL hell!

Фунция 68.19 - загрузить DLL. ecx - указатель на путь к библиотеке.
Возвращаемое значение - логический номер DLL в случае успеха или 0.

http://infinity-sound.narod.ru/console.7z - пример DLL
консоли.

ДЛЛ может состоять из нескольких COFF секций. Кождая DLL должна иметь таблицу экспортируемых функций. Метка EXPORTS должна быть объявлена public. Обязательная функция stdcall START должна вызываться с параметром state=1 после загрузки DLL и state=-1 перед выгрузкой. Функция должна вернуть ненулевое значение в случае успхе или ноль в случае неудачи. Каждая DLL должна содержать номер версии (экспоруемое имя 'version'). Младшее слово версии - текущая версия DLL, старшее слово - минимальная совместимая версия. Программа может работать с DLL если требуемая версия не больше текущей и не меньше совместимой. Таблица EXPORTS состоит из пар двойных слов. Первое - указатель на строку с именем переменной, второе значение. Экспортироваться могут не только адреса функций но и непосредственные данные как в случае с 'version'. В файл testcon2 добавлены две вспомогательные функции для работы с DLL. get_proc возвращает адрес экспортируемой переменной sz_name. link связывает библиотеку и программу. Для этого необходима таблица импортируемых функций (в примере imports). link заменяет адреса строк с именами функций на значения полученные после вызовов get_proc

sysfuncr.txt писал(а):
Код:
======================================================================
============= Функция 68, подфункция 19 - загрузить DLL. =============
======================================================================
Параметры:
  * eax = 68 - номер функции
  * ebx = 19 - номер подфункции
  * ecx = указатель на ASCIIZ-строку с полным путём к DLL
Возвращаемое значение:
  * eax = 0 - неудача
  * иначе eax = указатель на таблицу экспорта DLL
Замечания:
  * Таблица экспорта представляет собой массив структур по 2 dword'а,
    заканчивающийся нулём. Первый dword в структуре является
    указателем на имя функции, второй содержит адрес функции.


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


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 1115 сообщений ]  На страницу Пред. 150 51 52 53 5475 След.

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


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

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


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

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