Помогите новичку

Applications development, KoOS API questions
  • Я ни разу не вводил "-----". В теме раз 5 сверкал исходник и тебе его ещё пару раз кидал, мог бы хоть раз обратить внимание на текст.
    Из хаоса в космос
  • Leency wrote:Я ни разу не вводил "-----". В теме раз 5 сверкал исходник и тебе его ещё пару раз кидал, мог бы хоть раз обратить внимание на текст.
    Тогда я не понимаю чего ты от меня хочешь?
    Продолжаю мучить 4 функцию. Переписал на православный асм и всё равно падает:
    В моем ассемблерном исходнике который я написал по мотивам твоего кода, выложенного в самом первом сообщении, проблем с выводом не наблюдается. Если ты в нем получишь те эффекты, которые ты пытаешься показать, то я буду разбирать ситуацию.
    f4img.7z (6.97 KiB)
    Downloaded 211 times
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Смотрю семинар по ОС деву от главного разработчика ядра ReactOS Брагина и кажется до меня начинает доходить что есть квант времени для процесса.

    Рассмотрим случай, когда мы имеем два процесса запущенных одновременно и выводящих в консоль цифры от 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 написано, что можно:
    Spoiler:

    Code: Select all

      * для жёсткого диска: база и раздел определяются подфункциями 7 и 8
        функции 21:
        * eax = 0 (успех)
        * ebx = общее число кластеров
        * ecx = число свободных кластеров
        * dword [fileinfo] = размер кластера (в байтах)
    А здесь http://websvn.kolibrios.org/filedetails ... c#line-175 вот так:
    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:Image
    Пока нового API нет, хотел хотя бы так попробовать.
  • Мне нужно, что бы fasm вкомпилил процедуры типа proc - endp. Загвоздка вот в чём: в самой проге они не используются и потому fasm их просто выкидывает. А мне нужно что бы вкомпилил.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR, можно написать вместо

    Code: Select all

    proc MyProc
    ret
    endp
    просто метку

    Code: Select all

    MyProc:
    ret
    
  • GerdtR wrote:Загвоздка вот в чём: в самой проге они не используются и потому fasm их просто выкидывает. А мне нужно что бы вкомпилил.
    Скомпиль их отдельно в бинарь, а потом включи директивой file. Только про смещения не забывай.
  • Слыхал, что 68.19 умеет грузить PE либы. Попробовал - не получилось( Вообще есть какой способ PE либу загрузить?
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR wrote:Слыхал, что 68.19 умеет грузить PE либы. Попробовал - не получилось
    Либы - т.е. .lib? Имеются ввиду .obj , если я правильно помню
    + ещё какие зависимости у этой либы
    Вообще есть какой способ PE либу загрузить?
    Ну... можно и свой загрузчик сделать, а если имеется ввиду таки .dll то порыться в коде раеактос или вайн, скопировать тамошний загрузчик
    Муравьиным спиртом советую натереть!
  • Да, .dll, вроде виндовых. Т. е. библиотеки в PE формате сама Колибри грузить не умеет?
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR
    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 10 guests