我想将字节从位图设置到内存,设置值不等于给定透明度字节值的字节。
示意图我想做:
for (char *src=start;src<end;src++,dst++)
{
if (*src!=VALUE) {
*dst=*src;
}
}
即仅在 C 或程序集中设置与值不同的字节(或从程序集反向翻译的 C)
为了更快,我考虑过使用 32 位加载、src 和 dst 之间的 SEL 操作以及 32 位存储。但是,我需要设置掩码,它位于 APSR.GE 中。
如果我没记错的话,用 VALUE 进行 SIMD 比较(使用 USUB8)只会检查结果是 >= 还是 < 到 VALUE,无法检查它们是否相等。(当然,您可以将 VALUE 限制为 0 或 255 并收工...)
另一种可能性是在 src 上使用预先计算的掩码,然后手动设置 APSR.GE(可能吗?)但是 1)它使用内存,2)在 3)之前获取数据并不总是可行的)不确定它是否真的会比逐字节访问要快。