· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ZEN —› Disassemble C code

Посл.отвђт Сообщен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