在查看Visual Studio(2015U2)在
我在想这是不是比按照现有的方式操作更快,像这样写的形式:
/O2
(发布)模式下生成的汇编代码时,我发现这段手动优化的C代码被转换回乘法操作。int64_t calc(int64_t a) {
return (a << 6) + (a << 16) - a;
}
汇编语言:
imul rdx,qword ptr [a],1003Fh
我在想这是不是比按照现有的方式操作更快,像这样写的形式:
mov rbx,qword ptr [a]
mov rax,rbx
shl rax,6
mov rcx,rbx
shl rcx,10h
add rax,rcx
sub rax,rbx
我一直认为乘法比几次位移和加法慢,但是在现代Intel x86_64处理器上是否不再是这样呢?