__stdcall func(void* data, uint64_t length)
по идее для функции в стеке же должна такая картина быть
dword[esp + 12] - length.hi
dword[esp + 8] - length.lo
dword[esp + 4] - data
Компилер эксплорер показывает, что так и происходит
Ну вопрос был очевидно про х32(так как в вопросе адресация была по esp, а не по rsp), да и по идее там он тупо через rdx передаться
Да, через rdx передается
а там будет уже другое соглашение о вызовах __fastcall вроде, и там передача будет через регистр, то ли через rsi то ли через rdx, в зависимости от ос
тоесть stdcall не валидно в х64 для своих функций?
В 64-битном режиме __stdcall/__cdecl убрали. Если их использовать, они делают `__fastcall` ничего не делают. Ключевые слова остались для совместимости: очень много старого 32-битного кода, где люди указывали конвенцию.
тоесть действие stdcall заменяется на fastcall?
В х64 вообще без разницы, там одно соглашение о вызовах
Обсуждают сегодня