Комментарии 4
Держать указатель стека выровненным надо не потому что функция может что-то там внутри сделать, а потому что этого требует системный x64 ABI:
The stack will always be maintained 16-byte aligned, except within the prolog (for example, after the return address is pushed), and except where indicated in Function Types for a certain class of frame functions.
— https://learn.microsoft.com/en-us/cpp/build/stack-usage?view=msvc-170#stack-allocation
+11
Ну так а почему этого требует системный x64 ABI? Потому что функция может что-то там внутри сделать.
0
Ну уж нет!
Системный ABI требует выравнивания для того, чтобы вызываемая функция могла что-то сделать.
Или, что примерно то же самое, вызываемая функция может что-то сделать потому что это разрешает ей системный ABI.
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Неестественное выравнивание