А ты выведи не "-----", а допустим "AAAAAA" и сразу поймешь, что происходит искажение вывода, если не править еще и ф.65. А если не править одновременно размер буфера выделяемый по malloc, то возможно получить page fault как для ф.4, так и для ф.65.Leency wrote:Проблема у меня при указании параметра Х. Если он 0 или 2 рисует такое. При 10 чёрный фон ("надписи" не видно). При 36, как и должно быть - падает. QEMU, последнее ядро.
Помогите новичку
-
SVN r.3462 решает проблему с падением.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Я ни разу не вводил "-----". В теме раз 5 сверкал исходник и тебе его ещё пару раз кидал, мог бы хоть раз обратить внимание на текст.
Из хаоса в космос
Тогда я не понимаю чего ты от меня хочешь?Leency wrote:Я ни разу не вводил "-----". В теме раз 5 сверкал исходник и тебе его ещё пару раз кидал, мог бы хоть раз обратить внимание на текст.
В моем ассемблерном исходнике который я написал по мотивам твоего кода, выложенного в самом первом сообщении, проблем с выводом не наблюдается. Если ты в нем получишь те эффекты, которые ты пытаешься показать, то я буду разбирать ситуацию.Продолжаю мучить 4 функцию. Переписал на православный асм и всё равно падает:
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Смотрю семинар по ОС деву от главного разработчика ядра ReactOS Брагина и кажется до меня начинает доходить что есть квант времени для процесса.
Рассмотрим случай, когда мы имеем два процесса запущенных одновременно и выводящих в консоль цифры от 1 до 9000.
Ровно через 3 секунды вывод останавливается. Так вот программа, которая будет иметь больший квант времени напечатает больше цыфр?
Рассмотрим случай, когда мы имеем два процесса запущенных одновременно и выводящих в консоль цифры от 1 до 9000.
Ровно через 3 секунды вывод останавливается. Так вот программа, которая будет иметь больший квант времени напечатает больше цыфр?
Из хаоса в космос
Цифры - от 1 до 9. 1 до 9000 - это числа.
Возьми с полки пирожокSoUrcerer wrote:Цифры - от 1 до 9. 1 до 9000 - это числа.
Из хаоса в космос
ну... как сказать... во первых кванты обычно одинаковые, а приоритет влияет на чистоту выдачи квантаLeency wrote:Смотрю семинар по ОС деву от главного разработчика ядра ReactOS Брагина и кажется до меня начинает доходить что есть квант времени для процесса.
Рассмотрим случай, когда мы имеем два процесса запущенных одновременно и выводящих в консоль цифры от 1 до 9000.
Ровно через 3 секунды вывод останавливается. Так вот программа, которая будет иметь больший квант времени напечатает больше цыфр?
во вторых кванты очень мелкие, так что разница не настолько уж и ощутима за 3 секунды то.
но теоретически таки да, если я конечно правильно понимаю, что процессы запущены из одного исполняемого файла. если нет - то тут ещё и насколько коды программ оптимальны оттносительно друг-друга (т.е. можно ли сказать что один оптимальнее другого)
Муравьиным спиртом советую натереть!
Можно ли сейчас узнать размер свободного пространства на жёстком диске?
Здесь http://websvn.kolibrios.org/filedetails ... #line-3038 написано, что можно:
А здесь http://websvn.kolibrios.org/filedetails ... c#line-175 вот так:
Для рамдиска-то работает:
Пока нового API нет, хотел хотя бы так попробовать.
Здесь http://websvn.kolibrios.org/filedetails ... #line-3038 написано, что можно:
Spoiler:
Code: Select all
* для жёсткого диска: база и раздел определяются подфункциями 7 и 8
функции 21:
* eax = 0 (успех)
* ebx = общее число кластеров
* ecx = число свободных кластеров
* dword [fileinfo] = размер кластера (в байтах)
Spoiler:
Code: Select all
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
Spoiler:
Мне нужно, что бы fasm вкомпилил процедуры типа proc - endp. Загвоздка вот в чём: в самой проге они не используются и потому fasm их просто выкидывает. А мне нужно что бы вкомпилил.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
GerdtR, можно написать вместо просто метку
Code: Select all
proc MyProc
ret
endp
Code: Select all
MyProc:
ret
Скомпиль их отдельно в бинарь, а потом включи директивой file. Только про смещения не забывай.GerdtR wrote:Загвоздка вот в чём: в самой проге они не используются и потому fasm их просто выкидывает. А мне нужно что бы вкомпилил.
Слыхал, что 68.19 умеет грузить PE либы. Попробовал - не получилось( Вообще есть какой способ PE либу загрузить?
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Либы - т.е. .lib? Имеются ввиду .obj , если я правильно помнюGerdtR wrote:Слыхал, что 68.19 умеет грузить PE либы. Попробовал - не получилось
+ ещё какие зависимости у этой либы
Ну... можно и свой загрузчик сделать, а если имеется ввиду таки .dll то порыться в коде раеактос или вайн, скопировать тамошний загрузчикВообще есть какой способ PE либу загрузить?
Муравьиным спиртом советую натереть!
Да, .dll, вроде виндовых. Т. е. библиотеки в PE формате сама Колибри грузить не умеет?
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
GerdtR
viewtopic.php?f=2&t=32&start=175
viewtopic.php?f=2&t=32&start=175
Serge wrote:Добро пожаловать в 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 wrote:Code: Select all
====================================================================== ============= Функция 68, подфункция 19 - загрузить DLL. ============= ====================================================================== Параметры: * eax = 68 - номер функции * ebx = 19 - номер подфункции * ecx = указатель на ASCIIZ-строку с полным путём к DLL Возвращаемое значение: * eax = 0 - неудача * иначе eax = указатель на таблицу экспорта DLL Замечания: * Таблица экспорта представляет собой массив структур по 2 dword'а, заканчивающийся нулём. Первый dword в структуре является указателем на имя функции, второй содержит адрес функции.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Who is online
Users browsing this forum: No registered users and 15 guests