【发布时间】:2023-03-09 10:25:01
【问题描述】:
据我了解,由于 AVX,通过 3 字节 VEX 或 EVEX 前缀,您可以在 64 位模式下对多达 32 个 XMM/YMM/ZMM 寄存器进行编码,但是当通过英特尔手册查看它时告诉你这是可能的,我找不到它解释实际发生方式的部分。我只能看到一个扩展字段,即 REX 反转字段,但除了 EVEX 前缀中用于编码掩码寄存器的特殊位置之外,没有其他任何内容。
您将需要 2 位来对这么多寄存器进行编码。您是否必须以某种方式在 VEX/EVEX 前缀内组合 2 个倒置的 REX 字段,或者这个过程是如何工作的?
【问题讨论】:
-
xmm16..31(以及它们的 ymm/zmm 等效项)是 AVX-512 的新功能,只能通过 EVEX 前缀访问,它有 2 个额外位要添加到 ModRM 和一个 5 位额外字段.
-
@PeterCordes 你指的是这个吗?:
EVEX.RXBNext-8 register specifier modifierP[7 : 5]Combine with ModR/M.reg, ModR/M.rm (base, index/vidx).
标签: assembly x86-64 disassembly machine-code avx512