Assembly 在x86-64中,pcmpestri指令是以RAX和RDX为单位以字符为单位还是以字节为单位获取其长度参数?

Assembly 在x86-64中,pcmpestri指令是以RAX和RDX为单位以字符为单位还是以字节为单位获取其长度参数?,assembly,x86,Assembly,X86,也就是说,如果字符是16位字,RAX和RDX的值是以1=1 16位字符为单位的,还是以字节数为单位的 早些时候,我在另一篇帖子中发布了这个问题,彼得·科尔德斯(Peter Cordes)很友好地回答说,他和我一样,都并没有见过用词的例子。我自己发布这个问题,这样它就提高了可视性,而不是被埋在一堆其他小问题中 非常感谢如果您阅读,它几乎100%清楚: 每个输入的长度被解释为长度寄存器中值的绝对值。当长度寄存器中的值大于16(8)或小于-16(-8)时,基于imm8[bit3]的值,绝对值计算饱和为

也就是说,如果字符是16位字,RAX和RDX的值是以1=1 16位字符为单位的,还是以字节数为单位的

早些时候,我在另一篇帖子中发布了这个问题,彼得·科尔德斯(Peter Cordes)很友好地回答说,他和我一样,都并没有见过用词的例子。我自己发布这个问题,这样它就提高了可视性,而不是被埋在一堆其他小问题中

非常感谢

如果您阅读,它几乎100%清楚:

每个输入的长度被解释为长度寄存器中值的绝对值。当长度寄存器中的值大于16(8)或小于-16(-8)时,基于imm8[bit3]的值,绝对值计算饱和为16(字节)和8(字)

这只有在单位是字对字模式时才有意义,否则只能使用XMM输入寄存器的低8字节


另外,描述的其他部分使用了
16(8)
,就像我在前面的问题中引用的一些。

说“字节数/单词数”,这表明当使用单词时,它是一个单词数。谢谢Nate,所以我们认为单词数为1。我认为我没有看到使用单词而不是字节的例子,但对于这种情况,长度如何起作用并不神秘。非常感谢彼得。再次非常感谢你的帮助。昨天的止痛药让事情变得有点模糊,所以你帮我找到答案是非常宝贵的。@CecilWard:很抱歉听到你感觉不舒服。SSE4.2字符串指令具有足够的灵活性和清晰的头部;如果你没有100%的感觉,那么做其他事情可能会更有效率,尤其是当你在摸索时遇到更多问题时/恐怕这是一种永久性的疾病。但是一个小小的挑战可以让我远离痛苦。如果我太糟糕了,我就休息一会儿,然后再回到问题上来。因为35年前我以做asm为生,所以我喜欢这样,就像拜访一位老朋友一样。我有一些朋友更喜欢用C甚至D来写东西,并且希望远离asm,所以我的想法是为D编写最好的“内在的”访问例程,这样调用者就可以用它们实现任何类型的字符串应用程序,但实际上我甚至不知道调用者在做什么。是的,我看得很清楚现在在英特尔手册中。明亮的这确实很清楚。