信盈达吴老师 发表于 2021-9-19 15:52

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

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。

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

chineseboyzxy 发表于 2021-9-22 20:35

做的电子钟800多行汇编,换成c得写多少

taoest 发表于 2021-9-23 15:08

这个问题15年前就已经不讨论了。现在也只有学校老师会教一下汇编,已经没有人用汇编了。

xyz549040622 发表于 2021-9-24 14:08

现在学校都不教汇编了,除了很少的人在研究,大家都放弃使用了

单片机小哥 发表于 2021-9-25 14:03

我们义隆的很多单片机就只能用汇编写才够空间。。用C比较占空间

meeagle 发表于 2021-9-26 16:22

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

LEDS 发表于 2021-10-5 10:04

汇编的编译器都是免费的。

岭南江川 发表于 2021-10-5 13:26

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

NJZR 发表于 2021-10-5 14:31

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

叶春勇 发表于 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指令,那是肯定要学的,学操作系统,学编译原理,也是跑不掉。不过这些东西都是要很多年后的事情了。

kcfoo1 发表于 2021-10-6 16:48

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

xiaowuzxc 发表于 2021-10-7 13:15

程序主体用C,部分特殊的加速指令用汇编。编译器的优化还是很厉害的,写好c代码比琢磨汇编更有效

z_no1 发表于 2021-10-7 13:44

meeagle 发表于 2021-9-26 16:22
C编译的算法可能差汇编一两千倍,所以,高尖产品还是得用汇编来写,至少算法得用,有成本&执行速度&功耗等 ...

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

flytianya2010 发表于 2021-10-7 17:04

入门学C,研究学习汇编

9999jim 发表于 2021-10-8 15:44

汇编不容易阅读呀,国内用的也少,除非资源太紧缺了。现在单片机普遍大容量,已经流行C编译了。

meeagle 发表于 2021-10-27 19:22

用STC8G2K16S2在30M主频下,SPI读SD卡再驱动2.4TFT,刷一张图不过0.2S,想问下用其他什么编译器能有这效率?那些编译器只适合干没要求的活

qin552011373 发表于 2021-11-3 15:43

mark
页: [1]
查看完整版本: C语言和汇编语言在开发单片机时各有哪些优缺点?