Page 1 of 5

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

Posted: Sat Oct 20, 2012 4:48 pm
by johnfound
1. Функция 64 (sys_resize_app_memory) в каких единицах задается размер - байтах или страницах? А какой начальной адрес етой памяти? Все запрошенные страницы выделяются сразу, или когда программа пытается читать/писать там? Выделенная память заполнена чем нибудь или может содержать какого нибудь мусора.

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

Posted: Sat Oct 20, 2012 5:18 pm
by Serge
фунция аналог brk() и определяет новый размер всей доступной приложению памяти. Размер задаётся в байтах, но ядро округляет вверх на размер страницы. Страницы выделяются при первом обращении к ним, ядро их обнуляет.

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

Posted: Sat Oct 20, 2012 5:25 pm
by johnfound
А начальной адрес это сразу после инициализированные данные или после неинициализированные?

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

Posted: Sat Oct 20, 2012 7:11 pm
by Serge
Не очень точный термин "начальный адрес".
Представь что это комната в которой можно менять высоту потолка вверх и вниз, а 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.

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

Posted: Sat Oct 20, 2012 7:20 pm
by johnfound
Не совсем ясно. Скажем так:
mem_size = $100000
и задаем eax=64, ebx=1, ecx=4096

Какой будет последний доступный адрес памяти? 100fffh или нет?

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

Posted: Sat Oct 20, 2012 8:27 pm
by Serge
0x0FFF

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

Posted: Sat Oct 20, 2012 8:37 pm
by johnfound
Теперь ясно. Выходит что программа может сама себе уничтожит.

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

Posted: Sat Oct 20, 2012 9:41 pm
by Mario
johnfound wrote:Теперь ясно. Выходит что программа может сама себе уничтожит.
Это Колибри, здесь и не только такое возможно.

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

Posted: Sat Oct 20, 2012 9:44 pm
by johnfound
Mario wrote:Это Колибри, здесь и не только такое возможно.
Это не проблема, только несколько непривычно. Может стоит описание в вики сделать несколько подробнее.

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

Posted: Sat Oct 20, 2012 11:32 pm
by johnfound
Ну, продолжаю с вопросами...
Как правильно закончить приложение? фн.-1 завершает текущего потока. А как насчет других потоков процеса? фн.18.2 или фн.18.18? Но как узнать какие потоки принадлежат приложению?

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

Posted: Sun Oct 21, 2012 12:09 am
by Mario
Создать в памяти структуру и каждый запускающийся поток, первым делом, должен регистрировать штатный запуск и штатное завершение себя любимого. Если он еще не сделал себе сепуку или его порешили внешние обстоятельства, то ведущий (изначальный поток) перед своим завершением расстреливает всех своих псевдодетей. Даже если их уже нет в нашем подлом и коварном мире.

Метод естественно имеет некоторые ограничения, однако в штатных ситуациях вполне работоспособен. Как пример можно посмотреть код программы zSea.

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

Posted: Sun Oct 21, 2012 12:11 am
by Mario
johnfound wrote:
Mario wrote:Это Колибри, здесь и не только такое возможно.
Это не проблема, только несколько непривычно. Может стоит описание в вики сделать несколько подробнее.
Все в твоих руках.

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

Posted: Sun Oct 21, 2012 12:34 am
by johnfound
Mario wrote:Все в твоих руках.
А как? Редактирование разрешено только участников, а регистрация выключена.

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

Posted: Sun Oct 21, 2012 12:51 am
by Serge
Может сделать расширенную версию eax = -1 ebx = -1 завершающую все потоки в многопоточном приложении ?

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

Posted: Sun Oct 21, 2012 1:36 am
by XVilka
johnfound: Это было сделано после спам-атаки, когда reCAPTCHA показала свою несостоятельность. Напиши, пожалуйста, в личку, я сделаю аккаунт.