汇编:把汇编代码翻译成二进制机器代码
反汇编:把二进制机器代码翻译成汇编代码
汇编和反汇编是互逆的过程
1. 安装交叉编译工具链
ARM:
sudo apt-get install gcc-arm-linux-gnueabi
ARM64:
sudo apt-get install gcc-aarch64-linux-gnu
RISCV:
sudo apt-get install gcc-riscv64-linux-gnu
下面用riscv64
的cross-compiler举例:
2. objdump将a.elf 文件反汇编为asm或lst文件
将a.elf 文件反汇编为asm
riscv64-linux-gnu-objdump -S spl/u-boot-spl > spl.asm
将a.elf 文件反汇编为lst文件
.lst这一扩展名指的是“LiST”,通常指由文本信息构成的列表文件。该扩展名指的是此类文件的功能,而非格式。
.lst文件通常是可读的纯文本文件,可利用文本编辑程序进行编辑。通常可将TXT文件用作LST列表(与扩展名修改与否无关)。在某些情况下,应用程序会自动创建并引用LST文件,因此无需对此类文件进行修改。
riscv64-linux-gnu-objdump --source --all-headers --demangle --file-headers --line-numbers --wide a.elf > a.lst
3. objcopy将elf文件转换为bin文件,将bin文件转换为hex文件
将a.out转换成a.bin
riscv64-linux-gnu-objcopy -O binary a.out a.bin
将a.bin转换成a.hex
riscv64-linux-gnu-objcopy -I binary -O ihex a.bin a.hex