sth*_*55 4 optimization assembly bit-manipulation x86-64 micro-optimization
这是我的方法:
and rdx, 0x1
ror rdx, 1
or rax, rdx
Run Code Online (Sandbox Code Playgroud)
但我认为这不是很有效率。我不知道轮班操作是否会更具成本效益。
尝试
add rax,rax
shld rdx, rax, 63
Run Code Online (Sandbox Code Playgroud)
首先去除 rax 的 MSb,然后级联序列仅包含 rdx 的 lsb 和 rax 的 63 位,将其左移到rdx。
或者
add rax, rax
shrd rax, rdx, 1
Run Code Online (Sandbox Code Playgroud)
(这个答案假设问题中的解释是正确的,而代码是错误的——因为使用该代码不可能将清除的位“复制”到设置的位上。)