gpt4 book ai didi

assembly - 高效三值比较

转载 作者:行者123 更新时间:2023-12-02 12:43:26 25 4
gpt4 key购买 nike

对于无符号整数获取结果

if (a>b) => 1
if (a=b) => 0
if (a<b) => -1

可以优化为无分支版本

return ((a > b) - (a < b))

这可以写入 x86 程序集,如下所示:

4829D1           cmp rcx,rdx
0F94C1 setz cl
19C0 sbb eax,eax
83D8FF sbb eax,-$01
D3E8 shr eax,cl

13 bytes in total

有没有一种方法可以在少于 5 条指令或更少字节的情况下执行此操作?

最佳答案

Clang 3.7 为我生成以下 x86-64 机器代码:

0:   48 39 f7                cmp    rcx,rdx
3: 0f 97 c0 seta al
6: 0f b6 c0 movzx eax,al
9: 83 d8 00 sbb eax,0x0

这是四个计算指令;结果在eax中。

这可以改进:

0:   31 C0                   xor eax,eax
2: 48 39 D1 cmp rcx,rdx
5: 0F 97 C0 setnbe al
8: 83 D8 00 sbb eax,0x0

11 字节。

关于assembly - 高效三值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com