jap*_*iss 12 c++ optimization assembly visual-studio visual-c++
我在MSVC 2013,x64,使用/ 02的发布版本上编译了以下代码:
struct Point
{
int x;
int y;
};
Point xUnit()
{
Point p;
p.x = 1;
p.y = 0;
return p;
}
Run Code Online (Sandbox Code Playgroud)
生成的汇编代码为xUnit():
mov QWORD PTR p$[rsp], 1
mov rax, QWORD PTR p$[rsp]
ret 0
Run Code Online (Sandbox Code Playgroud)
为什么它写入堆栈然后立即读回来rax返回?
我原以为:
mov rax, 1
ret 0
Run Code Online (Sandbox Code Playgroud)
X86 版本似乎做得很好(即生成“mov eax,1”)。
我的猜测是,X86 和 X64 版本是独立的代码库,在一个目标中发现的优化不一定存在于另一个目标中。
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |