Может ли кто-нибудь помочь мне объяснить этот код?Буфер в x86 Сборка
.text:00401270 ; int __cdecl main(int argc,const char **argv,const char *envp)
.text:00401270 Dst = byte ptr −80h
...More Code...
.text:00401270 push ebp
.text:00401271 mov ebp, esp
.text:00401273 sub esp, 80h
.text:00401293 push 80h
.text:00401298 push 0
.text:0040129A lea eax, [ebp+Dst]
.text:0040129D push eax
.text:0040129E call _memset
Я понимаю, что буфер размером 0х80 создается и заполняется значением 0, когда _memset называется. Однако я не понимаю использование указателя [ebp + Dst]. Почему базовый указатель (ebp) задействован вообще? Кроме того, почему Dst установлен на отрицательное значение?
Упс, предназначенный для ввода ebp. Да, я забыл, что стек построен вниз, поэтому отрицательный val имеет смысл, и я должен был просто посмотреть на sub esp, 80 и увидел бы, что буфер выделяется чуть ниже ebp. Спасибо, что поняли. – user1210446