我正在尝试编写脚本以在文本文件中查找十六进制字符串,并将其转换为反向字节顺序。 我遇到的麻烦是某些十六进制字符串是16位,而有些是64位。 我用过Perl的压缩包来打包和解压缩16位十六进制数字,这很好用,但是64位却不能。 我已经尝试使用q和Q(在这里我得到ffffffffffff ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
需要 AVX 专家:
给出洗牌指令
VPSHUFB ymm1、ymm2、ymm3/m256
根据文档,此“根据 ymm3/m256 的内容对 ymm2 中的字节进行洗牌”。
我的问题是:是否可以反转操作,换句话说,知道 ymm2 和洗牌的结果,是否有可能得到 ymm3?
例如vpshufb ymm0, ymm0, ymmword ptr ds:[0x100]
我知道 ymm0 中已经加载了什么以及结果,但我想了解如何获取“控制掩码”ymmword ....
是否可以反转操作,换句话说,知道 ymm2 和洗牌的结果,是否有可能得到 ymm3?
不,一般来说不是。 如果源数据有一些重复元素(在通道内),则您无法唯一确定随机播放控制向量是什么,因为 output 字节可能来自多个地方。
不过,想出一个随机控制当然很容易,它可以从该输入创建 output。
当然,如果 shuffle 输入数据在每个 16 字节通道中是唯一的,那么是的,您可以唯一地确定每个 output 元素必须来自的索引。
即使这样,您也只能确定 shuffle 控制每个字节的低 4 位。 (并且高位未设置,否则vpshufb
的那个字节归零。)位 6:4 对操作完全没有影响。 (查看手册的操作部分: https://www.felixcloutier.com/x86/pshufb 。随机控制向量元素的位 3:0 是源数据向量的索引。)
随机播放控制元素的高位是另一个可能的歧义:如果输入数据包含任何零字节,则 output 零可能来自索引该源元素或来自具有其高位设置的该控制元素。
顺便说一句,没有任何说明可以帮助您有效地做到这一点。 IDK 如果您可以做得比一次搜索每个字节 1 的源 position 更好。 (使用字节广播和vpcmpeqb
-> vpmovmskb
-> bsf
一次搜索所有 16 个位置。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.