keil C51调试的时候发现c语言编译出来的汇编语言不是我所需要的,怎么修改方便

如题所述

有难度。你要总结一些这方面的经验。
C编译的时候。会多出一些东西来是正常的。因为编译器不是针对某一个MCU来做的。所以,它在编译的时候往往会参考INTEL的芯片结构来做。
你可以找一些C语言编译优化等资料来看看。写程序的时候,把运算的代码尽可能的分行来写,特别是IF等语句不要执行带运算的判断。少一个跳转的情况。尽量的少使用乘除法。改用移位来实现。慢慢的你就会做到了!追问

多谢,就是不知道有些工程师为什么总强调会能看懂C编译后汇编文件,有什么用呢

追答

我想你还没有做一些要求很高的产品的项目。
比如说:某个项目,采集某个信息。必须20US采集一次。采集完毕以后,还要对其进行滤波。如果滤波算法稍为复杂一点,比如说采用移动平均的话。这样子的程序,基本上就一直处于中断当中。如果程序写的不是很好。算法比较费时间,当计算的时间超过20US以后。芯片就一下在中断。主程序一行也跑不了。相当于死机。
这个时候,你想想看。怎么办?要么换一个跑得更快的MCU。要么修改这个程序。真正的高手,不会换MCU。因为那样成本很增加很多。而是把中断程序改为ASM(汇编)来实现。如果说你又不想用汇编写代码。那么,你就必须把C的代码控制得像汇编一样快。否则这个项目,你就没办法做下去。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-20
经过C语言编译过的汇编是很复杂的而且有很多的东西是没有必要的
因此你还是直接用汇编写

你想啊,同样功能的代码,一般编译到最后,用C语言写的使用汇编写的代码长度的很多倍
主要是C语言功能模块化,有很多东西直接看汇编的话是不必要的
第2个回答  2011-08-23
你在c语言中嵌入汇编,不然的话,keil会按照他认为的模式生成汇编代码的
相似回答