打印
[C语言]

C语言和汇编语言在开发单片机时各有哪些优缺点?

[复制链接]
15064|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。

使用特权

评论回复

相关帖子

沙发
chineseboyzxy| | 2021-9-22 20:35 | 只看该作者
做的电子钟800多行汇编,换成c得写多少

使用特权

评论回复
评论
NJZR 2021-9-23 00:55 回复TA
会写的一般是1.3倍上下,不会写的就没上限了,其实想把C写好完全不懂汇编语言和编译原理是不可能的,高手写C的时候心里想的肯定是汇编,而且大致知道会被编译成什么指令。其实把汇编的变量声明、地址再定位、宏定义都用好了写起来一点不比C麻烦。很多人觉得汇编可怕是因为自己不熟而且看见别人的汇编都是手动分配变量、几十K的程序一个文件全包了...... 
板凳
taoest| | 2021-9-23 15:08 | 只看该作者
这个问题15年前就已经不讨论了。现在也只有学校老师会教一下汇编,已经没有人用汇编了。

使用特权

评论回复
地板
xyz549040622| | 2021-9-24 14:08 | 只看该作者
现在学校都不教汇编了,除了很少的人在研究,大家都放弃使用了

使用特权

评论回复
5
单片机小哥| | 2021-9-25 14:03 | 只看该作者
我们义隆的很多单片机就只能用汇编写才够空间。。用C比较占空间

使用特权

评论回复
6
meeagle| | 2021-9-26 16:22 | 只看该作者
C编译的算法可能差汇编一两千倍,所以,高尖产品还是得用汇编来写,至少算法得用,有成本&执行速度&功耗等硬性要求的一般只能用汇编;快速变化的消费产品适合用C快点搞出来赚一波钱然后又搞下一个产品,貌似国外用汇编的多国内论坛是一边倒,汇编爱好者欢迎加群1056544658

使用特权

评论回复
评论
mailshichao 2021-10-5 10:52 回复TA
高尖的产品不一定用汇编吧,都只是工具,最要的是编程思想吧。我以前就用c开发的产品把另一个工程师用汇编开发的产品比下去了。 
7
LEDS| | 2021-10-5 10:04 | 只看该作者
汇编的编译器都是免费的。

使用特权

评论回复
8
岭南江川| | 2021-10-5 13:26 | 只看该作者
用C语言编写的软件即使用现在最好的编译软件也无法达到汇编语言的水平,所以国外对好多推向市场的产品最后都得换成汇编。国内的各大院校、公司及研究机构等开发人员嫌汇编麻烦、耗时已极少用汇编了!其中很到人都不会用汇编了。但对于一些适时性要求不高的场合用C语言编写还是非常好用的。

使用特权

评论回复
9
NJZR| | 2021-10-5 14:31 | 只看该作者
无论汇编或C,真的高手都不会排斥另一方的,因为如果需要可以像C一样地写汇编,也可以像汇编一样写C,优缺点都是相对地。互相攻击的人都是自己支持的语言半桶水而且根本不了解对方的,给汇编站队的人认为写C的都是一言不合就上浮点库、对底层寄存器操作一窍不通,给C站队的人认为汇编都是手工分配内存地址,几十K程序写在一个文件里,这种没有技术含量的讨论(吵架)看看就好,跟网上女拳、爱狗之类的纷争没啥两样。

使用特权

评论回复
10
叶春勇| | 2021-10-5 20:51 | 只看该作者
本帖最后由 叶春勇 于 2021-10-5 21:12 编辑

网络上的汇编与c之争,一般都是汇编胜利,我也曾经走过汇编的道路。
我就澄清一下:
1,效率,或速度快,来自一门《数据结构》的复杂度的概念决定,o(n^2)复杂度的汇编,写的再好,相对于o(nlogn)的c语言仍然是个垃圾。
2,如cpu无特殊指令,很多水平90分以下的汇编,干不过o3优化的C语言。老外的一本书《intel汇编语言程序设计》所说,我一开始还不信,用gcc生成o3代码,我信了,别低估热门c编译器的厉害。
3,我带个几个徒弟,刚出校门的人,一般对某单片机的寄存器配置非常重视,认为是干货。其实电子行业有一个职业叫fae,打电话最快。成熟的单片机,资料网上都是。用厂家的库,其实是自动化的fae。没办法涨价就得换,不惯着。
4,软件初级阶段,建议还是c,其实c语言也高级不到哪里去,把时间花在数据结构,软件框架,数值分析,编程模式与方法,软件测试,这样提高才快。
5,汇编语言在高级cpu,如含有dsp指令,simd指令,那是肯定要学的,学操作系统,学编译原理,也是跑不掉。不过这些东西都是要很多年后的事情了。

使用特权

评论回复
11
kcfoo1| | 2021-10-6 16:48 | 只看该作者
其实现在的单片机汇编指令都在向C靠拢,AVR,PIC 的指令就是专门针对c优化的,用c编译出的代码效率极高,一般人写的汇编代码不一定比c编译的好,但是汇编能让你系统的知道单片机是如何工作的,让你更了解单片机的硬件,学习汇编是非常重要的,对你以后用c帮助也是非常大的,建议最少要用汇编自己写过一个代码,并让代码正常跑起来

使用特权

评论回复
12
xiaowuzxc| | 2021-10-7 13:15 | 只看该作者
程序主体用C,部分特殊的加速指令用汇编。编译器的优化还是很厉害的,写好c代码比琢磨汇编更有效

使用特权

评论回复
13
z_no1| | 2021-10-7 13:44 | 只看该作者
meeagle 发表于 2021-9-26 16:22
C编译的算法可能差汇编一两千倍,所以,高尖产品还是得用汇编来写,至少算法得用,有成本&执行速度&功耗等 ...

稍微靠谱的c编译器其实是可以有函数对应mcu的特定汇编指令的,比如51的带标志位左移,这个是在标准c里面没办法体现,要用嵌入汇编的。对于其他指令,用c是可以知道将编译成什么汇编代码的。如果你不知道,那是你汇编水平不行。所以再纠结全部用汇编,没必要。费力不讨好。
实践出真知,不要固守老思想,对自己没好处。

使用特权

评论回复
14
flytianya2010| | 2021-10-7 17:04 | 只看该作者
入门学C,研究学习汇编

使用特权

评论回复
15
9999jim| | 2021-10-8 15:44 | 只看该作者
汇编不容易阅读呀,国内用的也少,除非资源太紧缺了。现在单片机普遍大容量,已经流行C编译了。

使用特权

评论回复
16
meeagle| | 2021-10-27 19:22 | 只看该作者
用STC8G2K16S2在30M主频下,SPI读SD卡再驱动2.4TFT,刷一张图不过0.2S,想问下用其他什么编译器能有这效率?那些编译器只适合干没要求的活

使用特权

评论回复
17
qin552011373| | 2021-11-3 15:43 | 只看该作者
mark

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

19

帖子

0

粉丝