Assembly 什么是JKZD和JKNZD?

Assembly 什么是JKZD和JKNZD?,assembly,x86,x86-64,disassembly,xeon-phi,Assembly,X86,X86 64,Disassembly,Xeon Phi,通过查看Zydis()助记符,我发现: ZYDIS_MNEMONIC_JKNZD, ZYDIS_MNEMONIC_JKZD, 我在别处找不到这些助记符;它们代表什么指令 这些指令执行什么操作 Z和NZ可能分别表示零和非零,J可能表示跳跃,但K和D 编辑:我找到了这个旧的英特尔文档,但它毫无意义: 它声明(第75页)JKZD编码为VEX.NDS.128.0F.W0 84 id。您已经用“英特尔骑士角”链接回答了自己的问题。KNC有自己的版本,后来成为AVX-512,机器代码编码不兼容 如《英特

通过查看Zydis()助记符,我发现:

ZYDIS_MNEMONIC_JKNZD,
ZYDIS_MNEMONIC_JKZD,
我在别处找不到这些助记符;它们代表什么指令

这些指令执行什么操作

Z
NZ
可能分别表示零和非零,
J
可能表示跳跃,但
K
D

编辑:我找到了这个旧的英特尔文档,但它毫无意义:


它声明(第75页)JKZD编码为VEX.NDS.128.0F.W0 84 id。

您已经用“英特尔骑士角”链接回答了自己的问题。KNC有自己的版本,后来成为AVX-512,机器代码编码不兼容

如《英特尔手册》中所述,KNC有类似于jrcxz的指令,但用于掩码寄存器(KNC和AVX-512调用
k0..k7
),以便在向量上比较和分支一条指令,并将其转换为掩码结果。JKZD-如果掩码为零,则在附近跳转。它有两种形式,
jkzdk1,rel32
jkzdk1,rel8


这些不是标准指令,也没有出现在英特尔的主流手册(包括AVX-512)中。在AVX-512中,使用
ktest k1,k1
kortest k1,k1
在掩码寄存器值上进行分支,以设置常规标志,然后使用常规分支条件。(通过展开以获得2个向量比较结果,您可以使用
kortest k1、k2
和2个单独的寄存器对其中任何一个非零进行分支。)

您已经用“英特尔骑士角”链接回答了自己的问题。KNC有自己的版本,后来成为AVX-512,机器代码编码不兼容

如《英特尔手册》中所述,KNC有类似于jrcxz的指令,但用于掩码寄存器(KNC和AVX-512调用
k0..k7
),以便在向量上比较和分支一条指令,并将其转换为掩码结果。JKZD-如果掩码为零,则在附近跳转。它有两种形式,
jkzdk1,rel32
jkzdk1,rel8


这些不是标准指令,也没有出现在英特尔的主流手册(包括AVX-512)中。在AVX-512中,使用
ktest k1,k1
kortest k1,k1
在掩码寄存器值上进行分支,以设置常规标志,然后使用常规分支条件。(通过展开以获得两个向量比较结果,您可以使用
kortest k1、k2
和两个单独的寄存器对其中任何一个非零进行分支。)

Zydis是什么?这些不是x86指令,而且你也没有任何其他的标签来说明它们的来源。Zydis是一个x86反汇编程序。添加了一个链接。由于它没有在源代码树的任何其他地方引用(只有自动生成的和
ZYDIS_MAKE_SHORTSTRING(“jkzd”)
),因此无法知道它为什么在那里。除非git提交消息中有提及。除非某个东西用一个数值常量索引该数组元素,或者在循环中到达它?无论如何,它不是x86指令。您可能希望在他们的github上打开一个问题,指出这些不是说明。要么是一个bug,要么他们会解释它为什么会出现。@PeterCordes用另一个来源编辑。啊,有趣的是,骑士角有它自己的版本,后来成为AVX-512。好了,KNC有类似于
jrcxz
的指令,但是对于掩码寄存器(KNC和AVX-512调用
k0..k7
),可以在一条指令中进行比较和分支。Zydis是什么?这些不是x86指令,而且你也没有任何其他的标签来说明它们的来源。Zydis是一个x86反汇编程序。添加了一个链接。由于它没有在源代码树的任何其他地方引用(只有自动生成的和
ZYDIS_MAKE_SHORTSTRING(“jkzd”)
),因此无法知道它为什么在那里。除非git提交消息中有提及。除非某个东西用一个数值常量索引该数组元素,或者在循环中到达它?无论如何,它不是x86指令。您可能希望在他们的github上打开一个问题,指出这些不是说明。要么是一个bug,要么他们会解释它为什么会出现。@PeterCordes用另一个来源编辑。啊,有趣的是,骑士角有它自己的版本,后来成为AVX-512。这样,KNC就有了类似于
jrcxz
的指令,但是对于掩码寄存器(KNC和AVX-512调用
k0..k7
),可以在一条指令中进行比较和分支。