在某些特殊情况,我们会查看C语言的反汇编结果,比如时需分析或者代码优化的容量比较等。这里介绍两种方法。
工具/原料
Keil5
通过仿真查看
1、打开一个Keil5工程,在需要查看汇编代码的地方设置一个断点,这个用于定位,便于仿真一次性执行到这里。
2、点击菜单栏的“Debug”->"Start/Stop Debug Session"或者直接按“Ctrl + F5”,执行仿真程序。
3、仿真执行后,可以看到代码窗口上还有两个窗口,拖动代码窗口和这两个窗口的分割线可以调整这两个窗口的宽度,其中“Disassembly”就是“反汇编”窗口,切换到这个窗口可以看到当前正在执行的汇编指令。
4、点击F5或者菜单栏的“Debug”->"Run"可以很快执行到断点处,这是就可以从“Disassembly”窗口中看到断点代码的汇编指令了。
通过修改编译条件
1、通过修改编译条件,使得编译器生成汇编源代码,这样便可以在编译的中间文件中直接查看生成的汇编代码了,而且可以保存,这个方法很适合源码分析。在Keil中,只需要选择需要查看汇编源码的艘早祓胂c文件,右击选择“Options for file ……”,切换到这个文件的Option对话框。
2、在弹出的“Options for File ……”对话框选择“Properties”属性页,默认情况“Generate Assembler SRC File”和“Assemble SRC File”是灰色的,这两个选项的功能在于控制“生成汇编源文件”和“汇编源文件”,点击前面的框框两下使得出现黑色的勾勾即可选中。
3、配置完对应c文件的编译选项后,对文件进行重新编译。
4、编译成功后,会在选择了生成汇编文件的c文件上产生一个花型的符号,这个表示此文件的编译方式不一样。
5、通过“File”->“Open”切换到该工程的Objects所在目录,一般Keil5将这个目录自动生成的,如果是Keil4则需要手动配置。
6、在Objects下有对应的.s文件,这个就是汇编文件,选择它。
7、可以看到,整个stm32f10x_it.s里面都是汇编代码,而且在汇编代码前都有对应的C代码,非常适合编译原理分析。