【发布时间】:2018-06-13 23:18:40
【问题描述】:
根据 link 关于 aarch64 指令编码的内容,某些指令中有未使用的位,例如下面列出的 LDR 指令中的 x。但是我有任何关于 armv8 手册中未使用位的文档。根据 armv8 手册,这些未使用的位是否有效?
xxx1 1101 x1ii iiii iiii iinn nnnt tttt - ldr Ft ADDR_UIMM12
【问题讨论】:
标签: armv8
根据 link 关于 aarch64 指令编码的内容,某些指令中有未使用的位,例如下面列出的 LDR 指令中的 x。但是我有任何关于 armv8 手册中未使用位的文档。根据 armv8 手册,这些未使用的位是否有效?
xxx1 1101 x1ii iiii iiii iinn nnnt tttt - ldr Ft ADDR_UIMM12
【问题讨论】:
标签: armv8
那个链接是 2012 年的,也就是 ARMv8 架构发布的时候,所以没有太多关于它的信息。在那种情况下,“x”与指令的解码有关,不确定他们是如何做到的,对我来说它看起来不正确。 您可以在ARM Architecture Reference Manual 中找到编码的所有值,查看 LDR 指令使用立即值(例如 LDR(立即)第 693 页,特别是下一页中的无符号偏移量)。 您将在那里看到两个最高有效位用于寄存器的大小(大小 == 10 用于 W 寄存器(32 位),大小 == 11 用于 X 寄存器(64 位))。
通常在 ARM 架构参考手册中,当有未使用的编码时,它会显示为 Unallocated Encoding 或 Reserve Encoding 或类似的东西。
此外,还有很多免费的编码可供使用,可能是为了将来使用,或者例如用于可扩展矢量扩展模块。您可以在 Nigel Stephens 在 2016 年 8 月 22 日 Hot Chips 28 会议上的以下幻灯片中看到所有使用和免费的编码,请查看第 8 片,灰色方块是免费未使用的编码。
【讨论】: