了解 Objdump 中反汇编的二进制文件 - 输出中的字段是什么

Dra*_*ght 4 binaryfiles objdump disassembly

当我使用命令“arm-linux-gnueabihf-objdump -d a.out”反汇编一个简单的 ARM 二进制文件时,得到以下输出

00008480 <_start>:
8480:   f04f 0b00   mov.w   fp, #0
8484:   f04f 0e00   mov.w   lr, #0
8488:   bc02        pop {r1}
848a:   466a        mov r2, sp
Run Code Online (Sandbox Code Playgroud)

这里不同的列代表什么?例如,8480 和 f04f 0b00(来自代码的第二行)

lll*_*lll 5

第一列是代码在内存中的地址。0x8480表示这段代码的内存地址是0x8480

第二列是代码的十六进制表示形式。f04f 0b00表示从内存地址0x8480(含)到0x8484(不含),有4个字节的代码,f0, 4f, 0b, 00

剩下的就是反汇编的代码。它们是从第二列中的代码中反汇编的。