如何解决为什么模 2 优化与 x&1 不同?
为什么是这段代码的汇编输出:
代码
int
f(int n) {
return n % 2;
}
汇编
f:
mov edx,edi
shr edx,31
lea eax,[rdi+rdx]
and eax,1
sub eax,edx
ret
与此不同:
代码
int
g(int n) {
return n & 1;
}
汇编
g:
mov eax,edi
and eax,1
ret
我在网上找不到任何东西(也许我没有使用正确的关键字)。
注意:
- 编译器:
gcc
- 参数:
-O3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。