【问题标题】:Are there unused bits in aarch64 instruction encoding?aarch64 指令编码中是否有未使用的位?
【发布时间】: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


    【解决方案1】:

    那个链接是 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 片,灰色方块是免费未使用的编码。

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多