完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、单片机的演进史
单片机为什么要使用C语言呢?每件事物又有它的成长历史,开始说说它的发展历史。 单片机在选用语言上共进化了三次:二进制机器码→汇编语言→C语言。下面来说说 二、早期的二进制机器码 最早期的时候,CPU也很简单,指令集很少,二进制位数也不多。那时候编译器也没被发明,编程语言也没被发明,那时候就是用二进制直接编程的。 总结:最早的编程没有语言也没有编译器,程序员直接使用二进制和机器(CPU)对话。就是用如 0xff 直接对CPU内的寄存器操作。现在所用C语言编程其本质上也用二进制码来操作CPU,是这样的,C语言编译。 CPU只识别0和1,因从其原理说起,数电里的“与”“或”“非”我们最熟悉不过了,与或非门成就了整个电子界的发展。印象最深的就是“非”字了,但是我们的老师是长沙人,“与或灰”就是这三个字让我影响深刻。 单片机生产原理就是按照很多个与或非门组合实现的,所以单片机CPU只识别0和1。 这种方式的坏处就是不容易扩展,随着CPU的进一步复杂化,指令的变多,指令位数的变多,编程难度呈几何倍数增长。人的大脑慢慢就跟不上这个节奏。一旦出了麻烦就会出现像钟南山这样的有英雄,所以就有人发明了汇编语言。 ** 三、二进制机器码到汇编语言 ** 第一次革命:发明了汇编语言。汇编语言就像是C语言的宏定义,本质就是用一个符号来代替一串二进制。 MOV 10101010101010 SUB 01010101010101 有了汇编语言之后,程序员就不用再去记忆二进制序列了。编程时只需要用汇编指令来编程即可,汇编指令就是一个符号(符号就是由文字构成的,如MOV)。因为人类大脑天生对文字符号更加友好,因此用符号编程更简单。 用汇编语言编写的源程序不能直接给CPU运行,必须通过一个翻译过程,把源代码翻译成二进制序列才能给CPU。这个翻译的过程就叫汇编,执行翻译动作的就是汇编器。 汇编语言也有一些不尽如人意的地方,比如没有可移植性。 现在大部分的开发其实都不在需要汇编语言,甚至在单片机领域都不在用汇编语言编写程序,但是有些公司在招聘X研发岗位是要求要会汇编。 我猜原因可以以下几点: 1.汇编语言对理解高级语言的特性有很大帮助。可以先举几个例子:在C语言中,有两种传递参数的种类,一种是值传递,一种是指针传递。也就是值传递,是把变量的数值传递给子函数。我们经常有一个疑问,一个变量传递给子函数为什么会只是传值呢,如果你了解汇编语言,知道C语言的函数调用时栈的变化你就会理解这是怎么回事。 2.汇编语言有助于程序的调试。 ** 四、汇编语言到C语言 ** 汇编语言没有可移植性。在这个CPU上写的汇编程序无法直接在另一个CPU上运行。因此汇编语言是和CPU一一对应的。 为了可移植性于是乎发明了高级语言C。第一个高级语言就是C语言。C语言进一步靠近人的思维,为人的思维发明了很多CPU没有的东西,譬如数组。最终的目的就是降低编程难度,让高级语言更接近人的思维,然后通过编译器、汇编器等的翻译将这些源代码变成二进制然后给CPU运行。 ** 五、革命无穷尽、层次变更多 ** 在C语言之上还有更高级语言,譬如:C++、Java、C#、bash等。越往上越靠近人的思维,越往上语言本身提供的封装越多,越往上编程难度越低、语言的掌握越容易。 以后会不能有C语言到XX语言呢这个不好说,比如Android开发是用Java语言,近年来出现了python语言也可以开发Android,而且实现同一功能python的实现代码要比Java的少。 一个完整的Python HelloWorld程序只要一行代码: print("Hello World") 一个完整的Java HelloWorld需要几行代码: public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World" |
|
|
|
只有小组成员才能发言,加入小组>>
2514 浏览 0 评论
1092浏览 2评论
703浏览 1评论
456浏览 0评论
200浏览 0评论
341浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 17:14 , Processed in 1.341619 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号