ARM64是否有故意未定义的操作码?
我想触发一个有意的未定义操作码异常。ARM64 是否有像 x86ud2和 ARM32一样显式保留为未定义的指令udf?
回答
是的,它也被称为udf。它出现在 ARMv8 体系结构参考手册第 C6-1380 页中。它需要一个立即数操作数,该操作数可以是任何 16 位值并被忽略,例如udf #0xdead.
GNU 汇编器udf最近增加了对助记符的支持(我相信 2.35 版,2020 年 7 月发布),因此如果您有旧版本,则可能不支持。但是, 的编码udf #0很方便0x00000000,因此您可以.inst 0改为编写,或者如果您打算大量使用它,则定义一个宏。
实际上,任何指令的高 16 位为 0 都是有保证的udf,低 16 位是立即数。您可以使用不同的标记来标记代码的不同部分,以便在内存转储中轻松定位。因此,.inst 0x0000dead如果您愿意,您也可以这样做。