是否有直接在 ConditionRegister 上生成的 PowerPC 奇偶校验标志?
Is there a parity flag for PowerPC generated directly on ConditionRegister?
在 x64 机器上有一个 Parity Flag,我想使用它与上次操作的结果相关(很像条件寄存器 (CR) 的工作原理),但是我没有意识到任何合适的方法使用 CR 位掩码获取此信息。
在 ppc64le ISA 我只发现这些操作是为了获得寄存器的奇偶校验(这可能是我操作的结果):
The parity of (RS) can be computed as follows.
popcntb RA, RS
prtyd RA, RA
但是这需要 2 条指令和 1 个临时寄存器。在 x64 上,我在比较后免费获得了这个标志。
不,条件寄存器不反映结果的奇偶性。正如您在 ISA 中所见,您必须为此专门编写代码。
我对x86奇偶校验标志的理解是它只对结果的最低有效字节进行操作;你可以自己决定这是否有用。 PowerPC 指令对一个字或一个双字进行操作,因此如果您想获得最低有效字节的奇偶校验,您需要确保其他字节包含零,例如 with
clrldi Rx,Ry,56
在 x64 机器上有一个 Parity Flag,我想使用它与上次操作的结果相关(很像条件寄存器 (CR) 的工作原理),但是我没有意识到任何合适的方法使用 CR 位掩码获取此信息。
在 ppc64le ISA 我只发现这些操作是为了获得寄存器的奇偶校验(这可能是我操作的结果):
The parity of (RS) can be computed as follows.
popcntb RA, RS
prtyd RA, RA
但是这需要 2 条指令和 1 个临时寄存器。在 x64 上,我在比较后免费获得了这个标志。
不,条件寄存器不反映结果的奇偶性。正如您在 ISA 中所见,您必须为此专门编写代码。
我对x86奇偶校验标志的理解是它只对结果的最低有效字节进行操作;你可以自己决定这是否有用。 PowerPC 指令对一个字或一个双字进行操作,因此如果您想获得最低有效字节的奇偶校验,您需要确保其他字节包含零,例如 with
clrldi Rx,Ry,56