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

问题描述 投票:0回答:1

琐事问题

17个字符,是VGF2P8AFFINEINVQB - 伽罗瓦场仿射变换逆,最长的x86指令助记符?有长度限制吗?

assembly x86 x86-64 instructions mnemonics
1个回答
0
投票

当然,目前可能是的,17 字节的

VGF2P8AFFINEINVQB
是英特尔文档中最长的助记符。

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

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


我通过目视扫描 https://www.felixcloutier.com/x86/ 的左侧栏看到的其他长指令包括

AESDECWIDE128KL
(15 个字节),但没有
V 
VEX 形式,最多只能得到 16 个字节。但该页面不使用等宽字体,并且某些条目标题不是指令的全名(例如
vbroadcast
)。

与中缀谓词比较可能会有点长,但我认为最长的是

VCMPUNORD_SPS
(13 个字节)。

VFMADDSUB132PD
VPMULTISHIFTQB
都是 14。
VBROADCASTF32X8
是 15。


脚注 1:Intel 的手册并没有定义太多有关 asm 语法规则的内容,但确实列出了机器代码的规则。

机器代码的最大指令长度为 15 字节,这至少可以假设使用临时寄存器强制将复杂指令分解为多个指令,例如对于 LEA 或 mov-immediate。 (也许 APX 确实用于整数指令的 4 字节 EVEX 前缀,例如

lock add r31d, [fs: r30+rax*4 + 0x123456], 12345678
需要 ModRM+SIB + disp32 和 imm32,所以需要 10 个字节,加上 4 字节 EVEX 加上操作码。所以这是 15 个字节没有段或锁前缀。)

© www.soinside.com 2019 - 2024. All rights reserved.