2016-12-24 6 views
0

Я новичок в обратном проектировании. Всякий раз, когда я disassemled программу, я всегда считал, что значение регистра ebp быть кратно 8.Является ли значение регистра ebp всегда кратным 8?

ли значение ebp регистра всегда кратной 8 или просто мое наблюдение?

+0

для выравнивания стека [Почему компилятор выделяет больше, чем необходимо в стеке?] (Http://stackoverflow.com/q/37770751/995714) –

+0

В качестве примечания, в регистре Windows x86 EBP выровнено по 4, но это не всегда кратно 8. – Neitsa

ответ

3

По соображениям производительности современные соглашения об использовании x64 требуют, чтобы стек выравнивался с 16 байтами. https://msdn.microsoft.com/en-us/library/ms235286.aspx https://en.wikipedia.org/wiki/X86_calling_conventions

Это также относится и к GCC сек x86 соглашение о вызовах.

Я могу предположить, что это относится к ebp, а не только esp.