小编Hus*_*sky的帖子

“cqo”、“cdq”和“cwd”x86_64 指令。为什么不只使用 cqo?

我不是最有经验的汇编程序员,我遇到了“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 组成,那么实际上它们看起来都是一样的。

assembly x86-64

6
推荐指数
1
解决办法
6735
查看次数

标签 统计

assembly ×1

x86-64 ×1