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会按照他认为的模式生成汇编代码的

我在keil软件 用c语言写51单片机的时候发现?
另外,你在调试时,再打开个反汇编窗口,跟踪C语音程序的汇编代码,就更清楚了;

请问大佬keil里C程序转成的汇编需要做哪些整理才能正常使用,没学过编...
方法如下:在C语言程序上点右键,如下图,出来一个菜单后,选每一项。又出来一个对话框,如下图,把画红圈的两项点成黑勾。再编译一次,在工程的文件夹下就多出一个SRC文件,就是汇编程序,打开后,把不需要的信息都删掉,自己整理一下就行了。对了,转换成的SRC文件,要改成ASM文件,才是汇编...

keil c51用汇编语言编程用法一样么
你可以找一些C语言编译优化等资料来看看。写程序的时候,把运算的代码尽可能的分行来写,特别是IF等语句不要执行带运算的判断。少一个跳转的情况。尽量的少使用乘除法。改用移位来实现。慢慢的你就会做到了!

keil c51用汇编语言编程用法一样么
是一样的,文件的扩展名要是汇编的.asm,不要用.c

keil调试时老是出现这个:*** error 65: access violation at C:0x...
6.单击全速运行,运行软件仿真。7.程序正在全速运行。8.仿真完成以后单击调试图标,就可以退出调试模式。keil Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编...

keil调试的时候c语言怎么变成汇编语言了
调试的时候c语言已经被编译过了,但程序窗口里有被注释掉的c语言代码和编译后实际对用c代码所执行的汇编代码,对照参考就知道编译结果是不是最终按照你c语言代码的意图去执行的,毕竟最终可执行二进制代码是由编译后的汇编生成的

keil3中c语言编好程序后我要看对应的汇编语言怎么看?怎么看啊?能帮我...
菜单调试反汇编窗口,就可看到汇编了,不过那是天书,没什么用的。other:生成src文件即可.方法1:在文件的第一行写上:#pragma src,然后编译,然后在工程文件夹里找同名.src文件即可.方法2.在文件图标上点右键...

keil3中c语言编好程序后我要看对应的汇编语言怎么看?怎么看啊?能帮我...
菜单\\调试\\反汇编窗口,就可看到汇编了,不过那是天书,没什么用的。other:生成src文件即可.方法1:在文件的第一行写上:#pragma src,然后编译,然后在工程文件夹里找同名.src文件即可.方法2.在文件图标上点右键...

keil怎样看编译产生的汇编代码
在成功编译的前提下,按Ctrl+F5,或依次点击菜单栏的“Debug”>>“Start\/Stop Debug Session”,切换到调试界面。 调试界面下,依次点击菜单栏的“View”>>“Disassembly Window”,即可打开反汇编窗口,其中包含有混排的源代码以及编译生成的汇编代码,如图所示。 注意经过优化后,源代码与汇编代码并不一定一致。 18 3 已...

C51单片机用的是C语言还是汇编语言?谢谢
两种语言都可以,因为最后烧写到芯片中的是二进制文件,该二进制文件由编辑器(如KEIL)编译连接C语言源码,或者汇编语言源码获得

相似回答