Вопросы по некоторым функциям...

Applications development, KoOS API questions
  • фунция аналог brk() и определяет новый размер всей доступной приложению памяти. Размер задаётся в байтах, но ядро округляет вверх на размер страницы. Страницы выделяются при первом обращении к ним, ядро их обнуляет.
  • А начальной адрес это сразу после инициализированные данные или после неинициализированные?
  • Не очень точный термин "начальный адрес".
    Представь что это комната в которой можно менять высоту потолка вверх и вниз, а f.64 устанавливает эту высоту.
    Обычный заголовок приложения:

    Code: Select all

    struct  APP_HEADER
            banner          dq ?
            version         dd ?    ;+8
            start           dd ?    ;+12
            i_end           dd ?    ;+16
            mem_size        dd ?    ;+20
            stack_top       dd ?    ;+24
            i_param         dd ?    ;+28
            i_icon          dd ?    ;+32
    ends
    mem_size это общий размер выделенной памяти (высота потолка) после запуска приложения. Если ты увеличишь размер, то новая память будет выделяться после mem_size.
  • Не совсем ясно. Скажем так:
    mem_size = $100000
    и задаем eax=64, ebx=1, ecx=4096

    Какой будет последний доступный адрес памяти? 100fffh или нет?
  • 0x0FFF
  • Теперь ясно. Выходит что программа может сама себе уничтожит.
  • johnfound wrote:Теперь ясно. Выходит что программа может сама себе уничтожит.
    Это Колибри, здесь и не только такое возможно.
  • Mario wrote:Это Колибри, здесь и не только такое возможно.
    Это не проблема, только несколько непривычно. Может стоит описание в вики сделать несколько подробнее.
  • Ну, продолжаю с вопросами...
    Как правильно закончить приложение? фн.-1 завершает текущего потока. А как насчет других потоков процеса? фн.18.2 или фн.18.18? Но как узнать какие потоки принадлежат приложению?
  • Создать в памяти структуру и каждый запускающийся поток, первым делом, должен регистрировать штатный запуск и штатное завершение себя любимого. Если он еще не сделал себе сепуку или его порешили внешние обстоятельства, то ведущий (изначальный поток) перед своим завершением расстреливает всех своих псевдодетей. Даже если их уже нет в нашем подлом и коварном мире.

    Метод естественно имеет некоторые ограничения, однако в штатных ситуациях вполне работоспособен. Как пример можно посмотреть код программы zSea.
  • johnfound wrote:
    Mario wrote:Это Колибри, здесь и не только такое возможно.
    Это не проблема, только несколько непривычно. Может стоит описание в вики сделать несколько подробнее.
    Все в твоих руках.
  • Mario wrote:Все в твоих руках.
    А как? Редактирование разрешено только участников, а регистрация выключена.
  • Может сделать расширенную версию eax = -1 ebx = -1 завершающую все потоки в многопоточном приложении ?
  • johnfound: Это было сделано после спам-атаки, когда reCAPTCHA показала свою несостоятельность. Напиши, пожалуйста, в личку, я сделаю аккаунт.
  • Who is online

    Users browsing this forum: No registered users and 7 guests