|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 11, 2003 01:19:55 Всё работает! 00401000 81 EC 00 10 00 00 sub esp,1000h 00401006 6A 00 push 0 00401008 8D 44 24 04 lea eax,[esp+4] 0040100C 6A 00 push 0 0040100E 50 push eax 0040100F 6A 00 push 0 00401011 C6 44 24 14 41 mov byte ptr [esp+14h],41h 00401016 FF 15 B0 60 40 00 call dword ptr ds:[4060B0h] 0040101C 81 C4 00 10 00 00 add esp,1000h 00401022 C3 ret |
|
|
Дата: Сен 11, 2003 05:03:05 Рухнет все если esp будет казать на самую вершину стэка, уже трактат сюда вкололил, но он чета на форум не добавился :( Переписывать не буду, так что вкратце: Так что рекомендую почитаь про организацию стэка под виндой - как поймете что через границу страницы (4кб) шагать не следует, так сразу просечете зачем нужна эта функция. |
|
|
Дата: Сен 11, 2003 17:46:35 Каким образом всё рухнет, если указать в STACKSIZE commited=reserved ? Или я всё-таки чего-то не понял?.. == Вчера я нашёл неплохую статью в MSDN (линк - см. выше). Там сказано, что проблема возникнет только если шагнуть за PAGE_GUARD. Если указать, что commited=reserved=256Kb, тогда PAGE_GUARD будет в самом конце 256Kb-ного участка. === И я уверен, что мой стэк не будет больше чем 256Кб. Кроме того, можно сделать обьект, который следит за ESP, и если до верха осталось, например, 4 страницы, он выдаёт ASSERT(). |
|
|
Дата: Сен 11, 2003 18:08:47 AsmGuru62 Если вы шагнёте на диапазон в две страницы то бряк точно будет. Проблема возникнет если шагнуть и на PAGE_GUARD. В данном случае я просто делаю два sub, вместо одного. Но С++ использует более извращённый способ. :) |
|
|
Дата: Сен 11, 2003 18:14:27 From MSDN: --- 'To suppress all __chkstk() calls, specify an artificially high threshold value such as /Gs999999. The /Gs0 option has the same function as the /Ge option and instructs the compiler to call __chkstk() in every function. It might be advantageous to change the default value if the code executes in an environment where the stack is fully committed.' --- Так всё же: если STACKSIZE 256Kb,256Kb - то PAGE_GUARD будет в самом конце или нет? --- |
|
|
Дата: Сен 11, 2003 20:04:32 AsmGuru62 А возьми вьювер памяти да посморти. В айсе команда есть. И нечего их тут всех слушать. Умные больно ;)))))) |
|
|
Дата: Сен 12, 2003 10:41:05 Если верить Рихтеру (я, лично, ему верю), то под NT при полностью заполненном стеке сторожевая страница пропадает, а самая нижняя страница будет зарезервирована, а не выделена. Под 9х там более хитро. Почитай Рихтера - у него целый раздел есть "Стек потока" - там объясняется почему это так. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.061 |