x86-64 指令与直到零?

问题描述 投票:0回答:0

我知道有一条指令会重复(例如

repnz
)。我有一个情况,我有一个(8 位)数组,它是
[7, 2, 3, 4, ..., 7, 0, 0, 0 ...]
(我最后有 64 个字节的零)。我想加载第一个值 (7) 并将其与其余值一起加载,直到出现零为止。所以 7 & 2 == 2, 2 & 2 == 2, 2 & 3 == 2, 2 & 4 == 0. 所以我想停在这里并有一个指针或索引 3 (array[3] = = 4).我还需要结果变为零之前的值。

我可以使用 rep 指令或 SIMD 指令来找到它吗?我可以编写任何聪明的 C 代码吗?目前,我使用一个简单的 while 循环,并以导致结果变为零的索引和“previousResult”结束,因此我可以立即使用它导致零之前的值(上例中为 2)

assembly bit-manipulation x86-64 micro-optimization
© www.soinside.com 2019 - 2024. All rights reserved.