• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

编译成汇编问题

Spirit 2018-10-09 浏览量:753

因为不明原因,编译的程序运行出错,需要阅读汇编代码排查。


目前只知道Keil在调试状态下能看到运行中的汇编代码。阅读起来非常不便。

请问,有什么办法或者工具,把阅读甚至打印出完整的汇编代码?

----------------------------------------------------------------------------------------------

补充:可能有朋友劝我没有必要去看汇编代码。

但,有些莫名其妙的故障,通过看汇编才能发现问题。已经有过两次经验:

一次是我定义了两个指定地址的变量

u32 test1[100] __attribute__((at(0X68000000)));

u8   test2[400] __attribute__((at(0X68000000)));

结果发现两个数组空间并不重叠,这是通过看编译后的汇编才发现的。然后认识到是自己对编译原理的认识不足


另一次是帮助网友排错,他的程序总是跑飞

也是通过看汇编发现某个函数的入口地址错误,改变优化等级为level0才正常。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 20180102135003565.png

    生成反汇编文件 
    fromelf –text -a -c –output=xxxx.txt xxxx\xxxx.axf 
    其中–text是指定输出文件格式为text格式, 
    -a Prints the global and static data addresses
    -c Disassembles code 
    –output=xxxx.txt 指定输出文件名, 
    xxxx\xxxx.axf 是指定路径下的指定axf文件,此文件作为输入文件,是keil编译后产生的;

    • 发布于 2018-10-10
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:10
  • 没这个必要吧,汇编比 c 语言代码量还大。

    直接用 c 定位出来问题在哪里,找找不就知道了,除非你汇编比 c 的水平还高。

    • 发布于2018-10-09
    • 举报
    • 评论 0
    • 0
    • 0

  • u32 test1[100] __attribute__((at(0X68000000)));

    u8   test2[400] __attribute__((at(0X68000000)));


    你这种语言定义本身就是特定语法特性吧。

    • 发布于2018-10-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 有个.lst文件,包含汇编的
    • 发布于2018-10-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 编译过程会自动生成汇编代码 你去obj目录能看到
    • 发布于2018-10-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个通常是在调试的时候看代码的单独生成汇编真的没试过.
    • 发布于2018-10-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 要生成汇编,需要在编译选项那里加上

    fromelf.exe --text -a -c --output=XX.txt​

    后面那个XX是你的文件名

    • 发布于2018-10-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个在你的编译器编译的时候会自动生成,不用用户去设置
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以在你的工程标签里面设置,设置好相应的地址就可以
    • 发布于2018-10-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以在你的编译器里面设置打开汇编的文件输出
    • 发布于2018-10-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 编译成汇编需要.lst文件的支持。
    • 发布于2018-10-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

编译成汇编问题