如何将机器码转换为汇编代码

在linux内核里面有很多脚本工具,位于linux/scripts/。里面有一个decodecode工具可以用来转换机器码,用法如下:

比如在arm64机器上有一行armv8的机器码:f2a800e8,将其翻译成汇编。

:$ echo "Code: f2 a8 00 e8" > code
:$ ./decodecode < code
Code starting with the faulting instruction
===========================================
0:   f2a800e8        movk    x8, #0x4007, lsl #16

注意指令字节之间留一个空格,以“Code:"作为起始,当然这个起始标记一个文件只需一个即可, 比如:

Code: e8 00 a8 f2 08 00 98 f2 a9 54 eb d2 a9 54 cb f2 a9 54 ab f2 a9 54 8b f2 09 25 81 a8 1f 01 01 eb cb ff ff 54 eb ff ff 17 cc 3e 00 00 00 00 00 00 e5 03 1e aa 00 06 a0 d2 6c 03 00 94 a0 00 5f d6 1f 10 1c d5 00 11 3c d5 00 00 7d b2 00 00 7c b2

当然脚本认为该机器码是跟host结构相同的原生机器码,想要跨架构的翻译还是不行的。

上一篇:Oracle回收站及flashback drop


下一篇:考研机试 54.打印极值点下标