aarch64 指令编码中是否有未使用的位?

Are there unused bits in aarch64 instruction encoding?

根据这个关于 aarch64 指令编码的link,一些指令中有未使用的位,例如下面列出的 LDR 指令中的 x。但是我在 armv8 手册中有任何关于未使用位的文档。根据 armv8 手册,这些未使用的位是否有效?

xxx1 1101 x1ii iiii iiii iinn nnnt tttt - ldr Ft ADDR_UIMM12

那个link是2012年的,也就是ARMv8架构发布的时候,所以相关信息不多。 'x' 在那种情况下与指令的解码有关,不确定他们是如何做到的,它对我来说看起来不正确。 您可以在 ARM Architecture Reference Manual 中找到编码的所有值,查看 LDR 指令使用立即值(例如 LDR(立即)第 693 页,特别是下一页中的无符号偏移量)。 您会在那里看到两个最高有效位用于寄存器的大小(size == 10 用于 W 寄存器(32 位),size == 11 用于 X 寄存器(64 位))。

通常在 ARM 体系结构参考手册中,当有未使用的编码时,它会显示未分配编码或保留编码或类似内容。

此外,还有大量免费编码可供使用,可能供将来使用,或者例如用于可缩放矢量扩展模块。您可以在 Nigel Stephens 在 2016 年 8 月 22 日 Hot Chips 28 会议上的以下幻灯片中看到所有使用和免费的编码,请看切片 8,灰色方块是免费未使用的编码。