Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 是否有';或';与x64组件中的PTEST等效?_Assembly_64 Bit_X86 64_Intel - Fatal编程技术网

Assembly 是否有';或';与x64组件中的PTEST等效?

Assembly 是否有';或';与x64组件中的PTEST等效?,assembly,64-bit,x86-64,intel,Assembly,64 Bit,X86 64,Intel,在x64汇编中,如果在%XMM0和%XMM1中没有设置相同的位,则设置零标志;如果在%XMM0中设置的所有内容也在%XMM1中设置,则设置进位标志: IF (SRC[127:0] bitwiseAND DEST[127:0] = 0) ZF = 1; ELSE ZF = 0; FI; IF (SRC[127:0] bitwiseAND (bitwiseNOT DEST[127:0]) = 0) CF = 1; ELSE CF = 0; FI; DEST[127:0

在x64汇编中,如果在%XMM0和%XMM1中没有设置相同的位,则设置零标志;如果在%XMM0中设置的所有内容也在%XMM1中设置,则设置进位标志:

IF (SRC[127:0] bitwiseAND DEST[127:0] = 0)
    ZF = 1;
ELSE
    ZF = 0;
FI;
IF (SRC[127:0] bitwiseAND (bitwiseNOT DEST[127:0]) = 0)
    CF = 1;
ELSE
    CF = 0;
FI;
DEST[127:0] Unmodified;
AF = OF = PF = SF = 0;
我经常发现自己想要一个标志,如果在%XMM0%XMM1中设置了任何位,就会设置该标志。您可以按照以下两个说明执行此操作:

POR %XMM0 -> %XMM1
PTEST %XMM1, %XMM1
但这需要额外的延迟周期。我现在有一个案例,我真的想挽救这个循环。有没有更快的方法?或者我用PTEST做这件事缺少的一些明显的方法?我希望有一些隐藏的等价物:

PTEST_OR %XMM0, %XMM1

这是否存在

不幸的是,没有。如果您可以生成倒置的条件(因此您要查找的是任择一=0而不是任择一=1),则可能可以使用PTEST,因为AND就是这样做的。