51单片机虚拟机,51单片机虚拟终端

作者:高方托管网 2024-10-17 00:23:42 0

大家好,今天小编关注到一个比较有意思的话题,就是关于51单片机虚拟机的问题,于是小编就整理了3个相关介绍51单片机虚拟机的解答,让我们一起看看吧。

JAVA和Python编程语言可以编写单片机程序吗?

理论上,C语言、JAVA语言、VB语言、python等任何一门语言都可以用作上位机开发语言,这个是毋庸置疑的。但是选择哪一门语言,会有一些考虑。

51单片机虚拟机,51单片机虚拟终端

首先,要考虑开发的难易程度,如果一门语言艰涩难懂,肯定不利于开发。

其次要考虑通用性,如果一门语言,只有少数人在用它开发单片机,显然不利于推广使用。

就执行效率而言几乎是没有区别的,因为开发的语言可以五花八门,但最终都被编译成单片机通用指令,以二进制的形式被烧录到单片机内存。

目前来看,单片机开发主要是用汇编语言或者C语言。

JAVA主要用来做WEB开发,大数据分析。

Python主要用来做人工智能相关的工作,当然Python几乎已经渗透到所有行业。

综上,如果题主想从事单片机开发,建议用C语言。


实际情况,单片机编程,一般用c语言或者汇编。

java

java首先不是一个可以直接把代码转换为二进制代码的编译器,如果你想在单片机上运行java程序,首先单片机得有一个jvm的环境,但是很显然市场上貌似没有这种东西,既然没有jvm环境,用java来编写单片机程序就行不通了。

python

python也是解释性的语言,也是不可以直接转换成二进制代码的,因此, 如果想用python编程,你的单片机里面也得有解释python的环境, 但是很显然,现在没有呀。 因此用python 在单片机上编程也是行不通的。

c++

如果有符合你的单片机的编译器,就可以用啦。 跟其他的可以直接转换为二进制的语言一样。

以Java为例,Java只是一种编程语言,最终Java源码要被编译成字节码,运行在Java虚拟机上。所以只要有对应平台的虚拟机就可以。

另一种思路是,用Java语言写代码,但使用特殊的编译器编译成目标平台直接可执行的文件。

有人说C、C++、java、python编程语言都是高级语言,为什么只有C和C++可以编写单片机程序?

从内存方面简单说说C/Java/Python的区别,不全面,还请谅解。

首先,单片机上有用Java, Python编写程序的。但这不是主流,而且也不是标准Java, Python。而C在单片机上已经普及了最新的C11标准。

这两者的区别主要有两点:

C/C++程序内存由代码自己管理:程序在运行状态的内存占用和分配延迟是可预期的

Java/Python程序内存由运行时系统进行动态分配和垃圾收集:程序在运行状态的内存占用和分配延迟是不可预期的

小结一下:

C运行时系统占用RAM和ROM都很小(KB级);而Java/Python运行时系统占用RAM/ROM较多(MB级)

1.非常重要的一点,就是资源限制。单片机,全称为单片微型计算机,是一种处理器芯片,其原理上和我们手机的和电脑处理器芯片是一样的。只是这是一种针对比较小的电路系统所制造的,出于成本考虑,很多单片机只有几K的ROM和不到1K的RAM,在这么小的平台上运行其它语言是不太实际的事情。虽然现在的单片机资源已经扩大了很多,但是由于其特定的使用环境,实在是没有必要为了运行其它高级语言而浪费资源。如果你真有这样的需求,你可以考虑其它更高级的处理器,厂家并没必要为了这样的需求而开发一款单片机。

2.C/C++

的特性决定。C/C++已经很好地满总了嵌入式程序开发,同时还具备其它语言所没有的特性——可以使用指针,直接对地址操作,这非常符合底层硬件的使用环境。

感谢邀请!

C、C++、java、python都可以写单片机程序,只有C、C++写单片机程序的日子早已经过去了,现在java和python也可以编写单片机程序了。

C/C++出来的早,早起有很多公司来写这两者的编译器,我们都知道编译器是可以把C/C++直接编译为二进制进气语言,也就可以编写单片机程序了。

JAVA/Python是解释型的语言,什么意思呢,这两种语言并不是直接编译成二进制的机器语言,而是通过解释器(通常称为虚拟机)在运行时来翻译成机器语言执行。那么如果要完成java和python编写单片机程序,就必须把解释器搬到单片机上,这样才能实现java和python在单片机上运行。

可喜的是已经有人完成了这些工作,在开源网站github上可以找到这些项目。

microPython 是python在单片机上的一直项目,很多单片机都已经适配

https://github.com/micropython/micropython

NanoVM 是java在AVR单片机上的移植

单片机没有操作系统,手工直接把机器码写到内存里执行。因此,Python之类使用实时编译的语言无法在单片机上执行。按照执行方式可分成三类:

  • 编译方式 将源代码翻译成机器码后执行的方式。这种方式执行速度快,但对操作系统有依存性。
  • 混合方式 将源代码翻译成中间码(如,字节码)后,在有各OS上的虚拟机翻译成其他语言或命令执行。或者,使用实时编译(JIT)转换成机器码后执行。
  • 解释方式 将源代码逐行翻译成其他语言或命令后,加载该语言或命令的机器码并执行相应的处理。该方式执行速度慢,但编码灵活,不用编译直接执行比较方便。

解释方式,混合方式都需要在操作系统中配置执行环境,不能在单片机上执行。只有编译方式的程序能在单片机上运行。

呵呵!这就得谈历史了,高级语言与低级语言的区别是什么是相对什么为高级?什么是低级?计算机最基本的语言就是机器码,汇编语言是为机器码对应的助记符,那么业界就认为汇编和机器码是机器语言然而人不易理解称之为低级语言,c,c++,Java,等为自然语言(人类能够理解的语言)所以称之为高级语言,最后为什么c,c++能够写单片机程序呢?是因为c,c++编译器能直接编译出单片机平台的机器码,如果Java等其他语言也能编译出单片机的机器码,那么他们也是能够编译单片机程序的,比如使用lua脚本就可以写单片机代码,他的原理是c语言里内嵌lua解释语言引擎!好的喜欢的读者可关注我的头条好”嘿咪编程专家”可用私信和留言一起学习交流

单片机为什么还在用C语言编程?

单片机资源有限,最好使用汇编,但是汇编移植性差,跳转要写标号,有时一段代码跳转条件多了,写标号名称要想半天,换平台后修改麻烦,不亚于重新写,而c语言移植性好,换个平台修改寄存器相关配置就可以重新使用了,节省时间,一般经常用的比如除法乘法运算用汇编写,c语言直接嵌入,可以提高效率,加快运行速度。

单片机内存小,譬如一些用于小家电的8位单片机,内存是以K算的,所以用汇编或C编译出来的目标二进制代码是最小最高效的,JAVA,C#之类的语言,他们本身是需要JVM或CLI的虚拟机环境来解释代码运行,效率太低,而且内存占用太高,只能用于相对高端的应用程序开发。任何单片机的引导层或驱动层,都是使用汇编或C开发。

其实PASCAL也是可发展为单片机开发语言,可是业界都以ASM与C为标准,没企业开发基于PASCAL嵌入式编译器,所以,就只有C和汇编适合单片机开发了。

最后附上一个视频大家看看,一位大牛用JS写的8位CPU指令流水执行时内部硅晶电路运行的模拟情况,浏览器可以运行,模拟器可以真实执行6502机器码。

6502CPU是70年代末,乔布斯用来做APPLE II电脑时用的芯片,也是后期中华学习机任天堂FC,小霸王学习机等产品使用的芯片,没什么商业价值,但是有研学价值。

视频加载中...

地址:http://visual6502.org/JSSim/

到此,以上就是小编对于51单片机虚拟机的问题就介绍到这了,希望介绍关于51单片机虚拟机的3点解答对大家有用。

相关推荐