ARM64 是否有意未定义操作码?
Does ARM64 have intentionally undefined opcodes?
我想触发一个有意的未定义操作码异常。 ARM64 是否有明确保留为未定义的指令,如 x86 的 ud2
和 ARM32 的 udf
?
对,也叫udf
。它出现在 C6-1380 页的 ARMv8 体系结构参考手册中。它需要一个立即操作数,它可以是任何 16 位值并被忽略,例如udf #0xdead
.
GNU 汇编程序最近增加了对 udf
助记符的支持(我相信 2.35 版,2020 年 7 月发布),因此如果您有旧版本,可能不支持它。不过udf #0
的编码很方便,就是0x00000000
,所以你可以直接写成.inst 0
,或者如果你打算大量使用的话,定义一个宏。
其实凡是高16位为0的指令都是保证udf
,低16位是立即数。您可以使用不同的标记来标记代码的不同部分,以便在内存转储中轻松定位。所以如果你愿意,你也可以做.inst 0x0000dead
。
我想触发一个有意的未定义操作码异常。 ARM64 是否有明确保留为未定义的指令,如 x86 的 ud2
和 ARM32 的 udf
?
对,也叫udf
。它出现在 C6-1380 页的 ARMv8 体系结构参考手册中。它需要一个立即操作数,它可以是任何 16 位值并被忽略,例如udf #0xdead
.
GNU 汇编程序最近增加了对 udf
助记符的支持(我相信 2.35 版,2020 年 7 月发布),因此如果您有旧版本,可能不支持它。不过udf #0
的编码很方便,就是0x00000000
,所以你可以直接写成.inst 0
,或者如果你打算大量使用的话,定义一个宏。
其实凡是高16位为0的指令都是保证udf
,低16位是立即数。您可以使用不同的标记来标记代码的不同部分,以便在内存转储中轻松定位。所以如果你愿意,你也可以做.inst 0x0000dead
。