|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 9, 2004 00:00:01 n0p Во-первых, почему это будет глупо? Потому что место занимает. Да и зачем ее вызывать если kernel32 за тебя все вызовет. Имхо конечно. |
|
|
Дата: Май 9, 2004 00:16:57 я в стеке никогда больше 10килобайт не хранил, полносью согласен с n0p'ом |
|
|
Дата: Май 9, 2004 07:17:51 [Раз уж пошел offtop] > Все-таки 3 метра инфы в стеке хранить я бы не рискнул. Тем более, что он для этого не задумывался. интересно.. А для чего же стек задумывался? imho - хранить инфу в стеке - абсолютно логично с точки зрения ассемблера. Конечно, есть С и GlobalAlloc (хотя наверное лучше VirtualAlloc) НО.. количество регистров в процессоре - ограничено. Можно, конечно, юзать и EAX/ECX/EDX/EBX/EBP/ESI/EDI.. Хотя ESP сущесвует не просто так. |
|
|
Дата: Май 9, 2004 07:31:32 > Конечно, есть С А чего C не умеет что-ли хранить данные в стеке? Там тоже существует понятие локальных переменных.. |
|
|
Дата: Май 9, 2004 11:38:16 hello_world Не уверен, что вызов одной функции займет уйму места. Особенно, если учесть выравнивания секций в PE.. В наш век гигагерцев и гигабайтов экономить байты в приложении немного нерационально с точки зоения времени разработки. S_T_A_S_ Ничего не имею против стека, но раз уж мы говорим о програмировании в винде, то надо использовать именно ее методы, а не досовские. Если есть функция, позволяющая комфортно работать с блоками памяти крупных размеров, почему надо извращаться через стек? Я имел счастье участвовать в больших проектах и поверьте, там достаточно мест где можно напороться на баг, чтобы еще и иметь проблемы со стеком. Хотя, с другой стороны, все зависит от конкретной задачи. |
|
|
Дата: Май 9, 2004 15:59:09 · Поправил: hello_world n0p Я не понимаю что именно тебе не нравится? Адресация ч/з ebp ? И вообще зачем эти апишки вызывать если кернел все сделает _за тебя_ ? Имхо вероятность ошибки только уменьшится. Где аргументы ? В наш век гигагерцев и гигабайтов экономить байты в приложении немного нерационально с точки зоения времени разработки Ну это смотря что пишешь. Если вирус/троян/кейлоггер, а у "клиента" диалап, то лишние 10Кб могут быть смертельны. |
|
|
Дата: Май 9, 2004 18:00:07 > C не умеет что-ли хранить данные в стеке? Конечно умеет. Но идеология программирования навязывает вазавать разные лишние ф-ции, например GetModuleHandle :) > почему надо извращаться через стек? Почему изваращаться? Неужели толкать несколько DWORD'ов в стек и вызывать медленную ф-цию проще, чем SUB ESP, XXXXX ;) |
|
|
Дата: Май 9, 2004 18:46:26 чем SUB ESP, XXXXX ;) если ты выскочишь на свободную страницу с PAGEGUARD и не сделаешь ЗАПИСЬ то при попытке чтения получишь жестокий облом. Именно поэтому sub esp, <дофига> и потом сразу ЧТЕНИЕ оттуда, будет глючить если размер <дофига> больше чем размер страницы. |
|
|
Дата: Май 9, 2004 18:47:56 hello_world Полностью согласен. Я говорил про стандартные приложения, а вирей и прочич зверей из красной книги естественно надо оптимизировать по максимуму. S_T_A_S_ Для стандартных приложений да. Когда необходимо быстро сделать полностью рабочую прогу для общего пользования, вряд ли стоит задумываться об оптимизации, если это может повлеч критические баги. Для узких мест, вирей и прочих веселых прог действительно лучше юзать стек. |
|
|
Дата: Май 9, 2004 20:38:52 infern0 Да, PAGEGUARD, TIB, и т.д. надо учитывать. С другой стороны, чтение без предварительной записи imho выглядит не совсем логично :) |
|
|
Дата: Май 10, 2004 04:24:09 [ infern0: Именно поэтому sub esp, <дофига> и потом сразу ЧТЕНИЕ оттуда, будет глючить если размер <дофига> больше чем размер страницы.] А чего ты там читать то собрался, мусор разный ;-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.051 |