历史上的今天

今天是:2025年07月02日(星期三)

正在发生

2020年07月02日 | 为何使用C而不使用汇编进行开发C8051F

发布者:shengju 来源: eefocus关键字:汇编  C8051F 手机看文章 扫描二维码
随时随地手机看文章

好些年之前,我为自己写了几万行汇编代码而骄傲。 

然而,做过多年软件开发的我,看到以前写的汇编代码也是很多不懂的,这可是自己亲手写的呀。汇编代码由于其可读性比较差,给后期的维护造成很大的困难。因此建议单片机的学习者们一定要学习C。 

这句话要是我在读书的时候听到,只是会嗤之以鼻。“用汇编就足够了,为什么用C呢?如果您用汇编做不了,说明水平还不够”,这是我的典型想法,当时我的汇编水平甚至成为我的骄傲。然而几年之后的今天,我要劝说后来学习者一定要舍弃汇编而学习C语言,是否很好笑。

首先说说C的优点。
1、直观,可读性强:这点很重要。对于一个产品,周期是很长的,即使出第一台产品之后,还有很长的维护时间。这中间维护人员可能经常变动,如果可读性强,将给维护工作省下很大的成本。即使是在开发,可读性强的程序也便于查错。 

2、模块化可以做的很好:这点也是很重要的。模块化做得好,当然程序的重用性就高。对于公司来说,这一点是关系到公司长远发展的。程序可以重用,说明下一次开发的投入就可以减少,时间也可以加快,多好的事呀。

还有很多有点,当然也就是高级语言相对于汇编语言的优点,这里就不一一列举了。

再来看看汇编的优点:应该来说,汇编语言操作硬件直观,对于硬件非常熟悉的人来说,直接操作很方便。另外可能就是很多人说的效率要高了。 

针对以上两点我来说说,首先“汇编语言操作硬件直观”,这是在代码编写阶段,对于整个产品周期来说,应该是要避免使用汇编语言的,这个在C语言的优点中已经说明。对于第二点,效率问题,目前C语言的编译器优化也做得很好,对于一个汇编不是很熟练的来说,C编出来的程序应该不会效率比汇编低。当然这样就对开发人员的要求降低了很多,人员的限制也就没有那么严格。另外是否真的是效率问题呢。我觉得应该是一个整体效率和局部效率的均衡问题。需要提高的是整体的效率。一个好的软件架构,远远比一个好的函数效率要高的多。因此主要的精力应该放在软件的架构上。另外现在CPU的速度不停的往上提,CPU越来越快,这点应该也可以弥补程序的效率吧。 

当然,我的意思不是不学习汇编。汇编对于熟悉硬件有很大的好处,应此汇编语言在学习初期一定是要学习的。在基本的硬件熟悉之后,就可以转向C了。

关键字:汇编  C8051F 引用地址:为何使用C而不使用汇编进行开发C8051F

上一篇:C8051F软件新建工程流程(Silicon IDE)
下一篇:高速SOC单片机C8051F

推荐阅读

加州硅谷技术公司Velodyne、激光雷达创业公司Ouster、以色列激光雷达公司Innoviz等初创公司都认为,激光雷达(LiDAR )对于开发安全的自动驾驶汽车至关重要。但作为汽车行业最受关注的高管之一,特斯拉CEO埃隆·马斯克(Elon Musk)认为,可以在不依赖激光雷达的情况下打造出自动驾驶汽车和半自动驾驶汽车。那么不采用这项技术来打造自动驾驶汽车的马斯...
近日,据沃衍资本官方消息,北京科华微电子材料有限公司(以下简称“科华微电子”)获得1.7亿元的投资,投资方为沃衍资本、江苏盛世投资、紫荆资本、深圳市投控通产新材料创业投资企业、四川润资、北京高盟新材料等投资机构。天眼查显示,此前,科华微电子也曾获得北工投资、诚和创投、南大光电、同华投资的数轮融资。(图片来源:天眼查)科华微电子成立...
IAR Systems宣布扩展其针对RISC-V的开发工具链IAR Embedded Workbench。日前,IAR宣布SiFive Insight实现了对跟踪的支持,这是业界第一个针对开放规范RISC-V ISA的预集成跟踪和调试解决方案。对安全性的要求和对许多标准的测试允许扩展,通过实时代码覆盖和程序运行时的更新,Workbench将允许开发人员更有效地提高代码质量。“随着IAR Embedded wor...
苹果公司今天向开发者发布了 iOS 和 iPadOS 15 的第二个测试版的新版本,新软件是在苹果发布第一个测试版一周后推出的。注册开发者可以从苹果开发者中心下载 iOS 和 iPadOS 测试版的配置文件,一旦配置文件安装完成,测试版更新就可以通过 OTA 下载。新的 iOS 和 ‌iPadOS 15 ‌测试版更新被贴上了 beta 2 的标签,而之前已经安装了第...

史海拾趣

问答坊 | AI 解惑

测试技术与测试信号处理_1991.pdf

寒假回家前人品爆发第三帖。 书名:测试技术与测试信号处理 作者:吴正毅 版权:清华大学出版社 版次:1991年4月第一版 总页数:251 文件格式:PDF 文件大小:6.12M 压缩包数:2 内容简介         本书论 ...…

查看全部问答∨

阻抗匹配概念

摘自电子工程专辑网友发言 阻抗匹配是指负载阻抗与激励源内部阻抗互相适配,得到最大功率输出的一种工作状态。对于不同特性的电路,匹配条件是不一样的。 在纯电阻电路中,当负载电阻等于激励源内阻时,则输出功率为最大,这种工作状态称为匹配 ...…

查看全部问答∨

请教在qte中的designer图形设计中如何把图片设为背景图跟覆盖按钮?

请教在qte中的designer图形设计中如何把图片设为背景图跟覆盖按钮?小妹刚接触qte什么都不懂,拜求高手,谢谢!…

查看全部问答∨

关于real6410开发板

有没有人用过real6410开发板,现在碰到几个问题希望有经验的玩家能给点建议。 1 usb 连接不上 驱动也装了dnw就是没反应 2 sd卡制作uboot时候出啦点小问题 找不着sd卡,后来用了别人机器好不容易弄制作啦uboot 结果加载uboot后串口不出任何信息。 ...…

查看全部问答∨

S2E中UART转TCP过程中的数据包的拆分

本人是初学者,对LWIP数据拆分包不是很了解,在S2E中telnet.c中的telnethandle程序中if(SerialReceiveAvailable(pState->ulSerialPort) &&tcp_sndbuf(pState->pConnectPCB) &&(pState->pConnectPCB->snd_queuelen < TCP_SND_QUEU ...…

查看全部问答∨

STM8S103K3输入捕获问题

void Timer1Config(void) { TIM1_DeInit(); TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_DOWN, 10000, 0); TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI,  TIM1_ICPSC_DIV8, 0x0); TIM1_I ...…

查看全部问答∨

关于外扩ram的问题(新手)

我刚开始接触dsp,想问问个位大哥关于2407的外部ram扩展时: 扩展CY7C1021时 1、为什么A15管脚LF2407要用一个逻辑阵列芯片:GAL16V8,而F2407啥都不用呢? 2、为什么DS、PS、CS的连接LF2047要用GAL16V8,而F2407用廉价的74H08就行了呢。…

查看全部问答∨

430系列有没有仿真软件

430系列有没有仿真软件(不用编程器)…

查看全部问答∨
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved