Я изучаю сборку x64 в Windows для «развлечения». В документации MSDN для соглашения о вызовах x64 в Windows говорится:
Вызывающий отвечает за выделение пространства для параметров вызываемому объекту и всегда должен выделять достаточно места для четырех параметров регистра, даже если вызываемый не имеет такого количества параметров. Это упрощает поддержку незапрототипированных функций C и функций vararg C / C ++.
Поскольку мои функции не являются функциями без прототипов C или функциями varargs C / C ++, означает ли это, что я всегда могу использовать [rsp + 8 ]
до [rsp + 32]
(при условии неизмененного значения rsp
сразу после вызова) для хранения общего назначения внутри моей функции, например для локальных переменных?