大家好,今天小编关注到一个比较有意思的话题,就是关于c语言方言的问题,于是小编就整理了2个相关介绍c语言方言的解答,让我们一起看看吧。

  1. 单片机除了可以用汇编和c语言编程,还有其他什么编程语言吗?
  2. C语言、汇编语言、机器指令、CPU之间是怎么联系起来的?

单片机除了可以用汇编和c语言编程,还有其他什么编程语言吗?

以一个业内近15年工作经验的人来解答:单片机派系众多,美系、日系、韩系、台系,还有现在的大陆系,各家使用的IDE各不相同。

c语言方言-c语言语言
(图片来源网络,侵删)

对于非公版MCU来说,只有原厂对自家底层最熟悉,各种指令架构各种坑,只有自家的编译器才能正确解释,当然自家的汇编指令集是最高效的,各种停产各种升级,想要移植换片子,想起来就头大!

对于公版的如8051、ARM架构,繁衍出很多能够适配的第三方编译环境,如Keil、IAR等,使用C语言编辑,能够完全不用理会各种“bit宽度、BANK、Page”,不太了解指令架构也可以越过各种沟各种坑!

c语言方言-c语言语言
(图片来源网络,侵删)

只要给的起钱,这些第三方的编译器都会尽量满足你,想要用什么语言来写,只要你高兴就好。未来Python、J***aScript流行开来,这些也能免费适配。

总之不管用什么语言来编辑,能够简单高效的解析出硬件需求,实现产品所规划的功能才是一个程序员的价值所在。

c语言方言-c语言语言
(图片来源网络,侵删)

除了C和汇编,超子还接触过使用Arduino、Labview、Python以及Lua对单片机进行程序开发。不过这些相对比较小众,没有普适性。


一、Arduino

Arduino应该算是一种对C和C++语言高度延伸的特有编程语言吧,因为其核心库是基于C和C++混合编写而成,提供给用户高度封装过的API接口。

其通常只针对于特定的Arduino环境的硬件开发板,通常是ATMEL公司的ATMEGA系列的8位或是32位的单片机。还有就是ESP8266也可以使用Arduino进行开发。

二、Labview

LabVIEW是由美国国家仪器(NI)公司研制开发的一种编程语言。它不同于C这种基于文本的编程语言,而是***用图形化编辑语言G编写程序。通过拖动控件,使用连接线连接各个控件,所有的数据都要基于数据流的模式。

使用LabVIEW可以对STM32单片机进行编程,当然这种方式还是比较小众,适合有一定Labview基础的人群。

三、Python

一说起Python,知道的人肯定非常多,它是一种面向对象的动态类型语言,而且也是一个非常热门的编程语言。更多的应该和爬虫或是人工智能联系在一起。

不过Python确实可以对STM32单片机进行编程,当然功能上并不是太多,使用上也不是太友好,也不具备普适性,而且需要基于特定的STM32开发板。

四、Lua

Lua是一种非常轻量而且十分小巧的脚本编程语言,Lua语言非常简单,易扩展,而且非常灵活。几乎在所有操作系统和平台上都可以编译,运行。

超子经常使用Lua语言对2G或是4G模块进行编程,使用起来非常灵活。

总而言之,C语言是目前使用最广泛的单片机编程语言,其他的编程语言相对比较小众,限制也比较多。适合有特定需求的人群。

现在主要还是c语言和汇编语言,这两个是当前底层系统必须的。未来可能会出现新的语言,现在也有在单片机上跑Python解释器然后用Python编写应用程序的,如micropython。也有J***aScript虚拟机的,然后使用J***aScript编写应用。这两个在单片机软件开发中还没成气候。

C语言、汇编语言、机器指令、CPU之间是怎么联系起来的?

CPU的全称是中央处理单元,是计算机进行运算的核心,根据使用的技术不同,CPU又分为X86,X64,ARM、DSP、单片机等不同的体系结构。在每种CPU上都有一套特定的指令集,这就是人们常说的机器指令,直接使用机器指令编写的程序就是机器语言程序。

理论上来说,是可以通过机器语言直接编写任何程序的(早期都是直接使用机器语言编程,那时程序相对比较简单),并且编写的程序可以直接运行,但是使用机器语言编程对程序员的要求极高,代码无法移植且不便于人直接阅读,于是人们发明了一组符号,用来表示这些机器指令,这就是汇编语言。汇编语言编写的程序计算机无法直接运行,需要一个叫做汇编器的程序转换为机器语言才可以在特定机器上运行。

而C语言是比汇编语言更高级的语言,使用C语言编写的程序也是无法在计算机上直接运行的,它需要编译器将C语言代码转换为机器语言,这个过程又分为几个子步骤,见下图。

为了使题主的问题更加完善,在这里补充两个概念,链接器与反汇编。

在大型程序中,往往会将任务分解为许多不同的子任务,每个子任务对应一个源文件,在C语言中就是多个C文件,编译器将每个C文件编译成一个目标文件(一般在Windows中是obj文件,Linux中是

.o

文件),这些目标文件也是机器指令,但是缺少一些必要的信息,无法直接运行,需要链接器将这些文件链接起来,再加上一些库文件与可执行文件头信息,成为一个可执行文件(Windows是PE格式,Linux是ELF格式)。

通常,在查看一个二进制文件时(目标文件或者可行性文件),不会直接显示机器指令,而是以汇编语言显示,这是因为此过程中有一个反汇编程序,将机器指令转换为汇编语言,它的功能刚好与汇编过程相反。

到此,以上就是小编对于c语言方言的问题就介绍到这了,希望介绍关于c语言方言的2点解答对大家有用。