我不是最有经验的汇编程序员,我遇到了“cqo”、“cdq”和“cwd”指令,它们都是有效的 x86_64 汇编。
我想知道在操作较小的值时使用 cdq 或 cwd 是否有任何优势。性能上有什么区别吗?
编辑:最初在计算一位数的绝对值时开始研究这一点。
例如,如果我们在 al 中有 -9 值:
cwd
xor al,dl
sub al,dl
Run Code Online (Sandbox Code Playgroud)
与将其作为 32 位值并计算
cdq
xor eax,edx
sub eax,edx
Run Code Online (Sandbox Code Playgroud)
或者如果我们有 -9 的 64 位值
cqo
xor rax,rdx
sub rax,rdx
Run Code Online (Sandbox Code Playgroud)
如果原始值是 64 位并且由一个值 -9 到 9 组成,那么实际上它们看起来都是一样的。