【发布时间】:2021-04-28 23:43:31
【问题描述】:
我想触发一个有意的未定义操作码异常。 ARM64 是否有明确保留为未定义的指令,例如 x86 的 ud2 和 ARM32 的 udf?
【问题讨论】:
我想触发一个有意的未定义操作码异常。 ARM64 是否有明确保留为未定义的指令,例如 x86 的 ud2 和 ARM32 的 udf?
【问题讨论】:
是的,它也称为udf。它出现在第 C6-1380 页的 ARMv8 架构参考手册中。它需要一个立即操作数,该操作数可以是任何 16 位值并被忽略,例如udf #0xdead.
GNU 汇编器最近添加了对 udf 助记符的支持(我相信 2020 年 7 月发布的版本 2.35),所以如果您有旧版本,它可能不受支持。但是udf #0的编码方便的是0x00000000,所以你可以直接写.inst 0,或者如果你打算经常使用它,可以定义一个宏。
实际上,任何高16位为0的指令都是保证udf,低16位是立即数。您可以使用不同的标记来标记代码的不同部分,以便在内存转储中轻松发现。所以如果你愿意,你也可以.inst 0x0000dead。
【讨论】: