Я видел в нескольких местах, что соглашения Microsoft для платформ x64
были сужены до одного: Caller очищает стек (cdecl
), а параметры передаются в комбинации стека и регистров (я не вхожу в точные подробности здесь). Я предполагаю, что если это соглашение о вызове ОС, то, вероятно, все остальные компиляторы, предназначенные для Windows (например, mingw-w64), также следуют за ним.Соглашение о звонках на x64
Является ли это соглашение о вызове истинным и на других основных платформах (x64
Linux и т. Д.)? Или Linux все еще использует несколько соглашений о вызовах или даже один, но другой? Do GCC
или Clang
позволяют использовать несколько соглашений о вызовах на x64
Linux?
Те счастливые дни вот-вот закончатся. Microsoft добавляет соглашение о вызове __vectorcall. До шести значений __m128' передавались через регистры SSE2. –