assembly 如何从IAR编译二进制文件中获取汇编文件

qcbq4gxm  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(148)

我想知道如何从IAR编译的**.bin中获取.s**文件。尝试gdb和objdump都没有成功。
查看IAR项目选项页面,但在编译时没有找到任何一致的内容。
有什么想法吗?先谢谢你了。

$ gdb -q ./prj.bin
(gdb) "C:\git\...\EWARM\BUILD\Exe/./prj.bin": not in executable format: File format not recognized
(gdb) Quit (expect signal SIGINT when the program is resumed)
$ objdump -d prj.bin
C:\MinGW\bin\objdump.exe: prj.bin: File format not recognized
yquaqz18

yquaqz181#

IAR编译器具有-l选项,用于从C源代码生成程序集文件。

-l[c|C|D|E|a|A|b|B][N][H] file|directory
                Output list file
                   c     C source listing
                   C        with assembly code
                   D        with pure assembly code
                   E        with non-sequential assembly code
                   a     Assembler file
                   A        with C source
                   b     Basic assembler file
                   B        with C source
                   N     Do not include diagnostics
                   H     Include header file source lines
  • *file.c生成file.s**示例:
iccarm -lb . file.c -o file.o

如果只有二进制文件而没有源代码,则需要使用第三方实用程序,如IDA Proarm-none-eabi-objdump或类似的工具。
例如,arm-none-eabi-objdump

arm-none-eabi-objdump -b binary -marm -Mforce-thumb -D <file>.bin

无论哪种方式,二进制文件都不会给予你符号名称或节,因为你可以从ELF转储。此外,你必须告知可执行文件是否是使用thumb指令(-Mforce-thumb)为目标构建的。
最后,在最好的情况下,转储原始二进制文件将给予关于整个可执行文件的原始图片的有根据的猜测。
祝你好运

相关问题