【问题标题】:Does ARM64 have intentionally undefined opcodes?ARM64 是否有故意未定义的操作码?
【发布时间】:2021-04-28 23:43:31
【问题描述】:

我想触发一个有意的未定义操作码异常。 ARM64 是否有明确保留为未定义的指令,例如 x86 的 ud2 和 ARM32 的 udf

【问题讨论】:

    标签: arm64 opcode


    【解决方案1】:

    是的,它也称为udf。它出现在第 C6-1380 页的 ARMv8 架构参考手册中。它需要一个立即操作数,该操作数可以是任何 16 位值并被忽略,例如udf #0xdead.

    GNU 汇编器最近添加了对 udf 助记符的支持(我相信 2020 年 7 月发布的版本 2.35),所以如果您有旧版本,它可能不受支持。但是udf #0的编码方便的是0x00000000,所以你可以直接写.inst 0,或者如果你打算经常使用它,可以定义一个宏。

    实际上,任何高16位为0的指令都是保证udf,低16位是立即数。您可以使用不同的标记来标记代码的不同部分,以便在内存转储中轻松发现。所以如果你愿意,你也可以.inst 0x0000dead

    【讨论】:

    • 我想我明白为什么找不到它了:我有手册的原始版本。显然,ARM 直到后来才保留 UDF 空间。 (而且因为第一代 ARM64 处理器在这个空间中没有操作码,UDF 仍然可以在这些处理器上工作。)
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 2023-02-11
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多