允许交换2个变量。通过mov交换变量的成本,xor
int temp = a;
a = b;
b = temp;
下面是一些半优化ASM伪代码:
mov eax, dword ptr [rbp+4]
mov ebx, dword ptr [rbp+8]
mov dword ptr [rbp+8], eax
mov dword ptr [rbp+4], ebx
难道是更快的海誓山盟,以异或对象?
a ^= b ^= a ^= b;
ASM伪代码:
mov eax, dword ptr[rbp+4]
xor eax, dword ptr[rbp+8]
xor dword ptr[rbp+8], eax
xor eax, dword ptr[rbp+8]
xor dword ptr[rbp+8], eax
mov eax, dword ptr[rbp+4]
以下哪种会更快? (欢迎客人)
它也将取决于它在哪个CPU上运行。 – theunamedguy
这个问题没有实际意义,因为没有一条指令可以直接操作两个内存操作数。 –
真的吗?那么在任何情况下都排除'xchg',我会将我的伪代码重新编写为'mov'来首先注册 –