|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 6, 2003 13:12:47 Писал прогу на С. компилировал с Microsft VisualStudio C++ 6.0 Потом дисассемблировал код. В начале всех функций компилятор выдает следующий код: 00401241 mov ebp,esp 00401243 sub esp,0A4h ; отнимаемое разное для ; разных функций ......saves registers 0040124C lea edi,[ebp-0A4h] 00401252 mov ecx,29h 00401257 mov eax,0CCCCCCCCh 0040125C rep stos dword ptr [edi] Вопрос: с какой целью в стэке пропускается 0А4Н (в данном случае)байт? И зачем каждому двойному слову назначаится 0CCCCCCCCН ? |
|
|
Дата: Ноя 6, 2003 13:23:09 это явно отладочная версия. sub esp, xxx это выделения стека под локальные переменные, а заполнения CCh - признак свободного участка (тут я могу ошибиться) |
|
|
Дата: Ноя 6, 2003 13:37:44 Это выделяется на стеке место под локальные переменные, а потом они "обнуляются" (обнуление в VC - это заполнение 0xcc) |
|
|
Дата: Ноя 6, 2003 13:46:16 masquer Точно! Под локальные переменные. |
|
|
Дата: Ноя 6, 2003 13:47:36 rst Всё ясно. |
Эта тема закрыта. Отвђты больше не принимаются. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063 |