VGF2P8AFFINEINVQB最长的 x86 指令助记符吗?

Is VGF2P8AFFINEINVQB the longest x86 instruction mnemonic?

提问人:vengy 提问时间:9/14/2023 最后编辑:Peter Cordesvengy 更新时间:9/14/2023 访问量:201

问:

琐事问题

在 17 个字符处,VGF2P8AFFINEINVQB - Galois Field Affine Transformation Inverse 是最长的 x86 指令助记符吗?有长度限制吗?

汇编 x86-64 指令 记词

评论

2赞 njuffa 9/14/2023
可能,因为它比 和 长。作为一个琐事问题,它似乎跑题了?vpbroadcastmb2qvbroadcasti32x2
2赞 Peter Cordes 9/14/2023
没有长度限制;汇编程序只是软件,每个程序都有不同的解析器。如果要将此指令添加到具有某些硬编码标记长度限制的旧汇编程序中,则可以编造一个备用名称。CPU 只关心机器码。(英特尔的手册并没有费心定义太多关于 asm 语法规则的内容。确认它是否是当前存在的最长的一种方法是检查指令数据库,例如 XED 附带的数据库。uops.info/xml.html这应该包含它们,除非有些是通过后缀构造的。

答:

4赞 Peter Cordes 9/14/2023 #1

当然,目前可能是的,17 字节是英特尔文档中最长的助记符。VGF2P8AFFINEINVQB

没有长度限制;汇编程序只是软件,每个程序都有不同的解析器。如果要将此指令添加到具有某些硬编码标记长度限制的旧汇编程序中,则可以编造一个备用名称。CPU 只关心机器码1

确认它是否是英特尔目前记录的最长的一种方法是检查指令数据库,例如 XED 附带的数据库。https://uops.info/xml.html .这应该包含它们,除非有些是通过后缀构造的。


我从目视扫描 https://www.felixcloutier.com/x86/ 左侧列时看到的其他长指令包括 AESDECWIDE128KL(15 字节),但它没有 VEX 形式,最多只能获得 16 个字节。但是该页面不使用等宽字体,并且某些条目标题不是指令的全名(例如)。Vvbroadcast

与中缀谓词相比可能会有点长,但我认为最长的是 VCMPUNORD_SPS(13 字节)。

VFMADDSUB132PD并且都是 14 岁。 是 15 岁。VPMULTISHIFTQBVBROADCASTF32X8


脚注 1:英特尔的手册没有费心定义太多关于 asm 语法规则的内容,但确实为机器代码制定了规则。

机器码的最大指令长度为 15 字节,至少可以假设使用临时寄存器强制将复杂指令分解为多个指令,例如用于 LEA 或 mov-immediate。(也许真的用 APX 用于整数指令的 4 字节 EVEX 前缀,比如需要 ModRM+SIB + disp32 和 imm32,所以 10 个字节,加上 4 字节 EVEX 加操作码。所以这是 15 个字节,没有段或锁前缀。lock add r31d, [fs: r30+rax*4 + 0x123456], 12345678