Я скомпилировал следующий код на MSVC 2013, x64, Release build с /02:
struct Point
{
int x;
int y;
};
Point xUnit()
{
Point p;
p.x = 1;
p.y = 0;
return p;
}
Сгенерированный код сборки для xUnit()
:
mov QWORD PTR p$[rsp], 1
mov rax, QWORD PTR p$[rsp]
ret 0
Почему он записывает в стек, а затем сразу же возвращается в rax
для возврата?
Я бы ожидал:
mov rax, 1
ret 0