我一直在思考机器代码是如何特定于架构的,以及 Javascript 如何在(几乎)每个浏览器中工作。我一直在做一个必须做一些严肃计算的项目,它是基于 Javascript 的,需要一整分钟才能完成计算。这让我渴望 C 的速度。但该项目使用 Javascript 的全部原因是为了简单和可移植性。
这给了我一个想法,如果有一种类似于 Javascript 的语言在每个架构上都可以移植并作为可执行文件运行呢?大多数人会指向 Java,但我在想一些开销更少并由操作系统处理的东西。不是字节码,而是本机机器码。
做了一些研究和思考来完成这项任务的不可能。您如何为特定架构制作一个与普通 C 编写的应用程序一样小的可执行文件,该文件可以在每个架构上以相同的速度运行,就好像它是为该架构在 C 中本地编译的一样?
这是我的下一个想法。本机机器代码是特定于架构的,每个架构都有某些特殊功能,有时处理相同的任务会有所不同。此外,某些优化是特定于每个架构的。如果有通用机器码怎么办?当操作系统将指令加载到内存中时,它会自动转换指令以适应架构。或者也许(更疯狂的想法)CPU 可以包含接收通用机器码并自动将通用机器码适应其本机机器码的能力?
通用机器代码规范必须足够通用以涵盖正常的机器代码功能。
当然,如果通用机器代码确实有效,那么人们可能会想要一种可由所有操作系统处理的通用可执行格式。这样,可执行文件不需要跨操作系统更改。这导致需要专门制作跨机器通用的框架。更重要的是操作系统特定的功能,以及超出我所知的输入和输出能力。
通用机器码编译的可执行文件:
优点:
- 与本机编译的可执行文件几乎相同的大小
- 与本机编译的可执行文件几乎相同的性能
缺点:
- 加载速度稍慢(希望不存在),因为它在将可执行文件加载到 ram 时将通用机器代码转换为本机机器代码
可行吗?
编辑:
我用过Java,用它做了一个游戏。它不像我想要的那样普遍,也不友好。* 它是它自己的编程语言,由 Oracle 维护。专有的,有点太大了。需要在某些机器上安装。
更具体地说,我不是在谈论拥有一种新的编程语言。我说的是拥有一种新的机器代码语言,它包含足够的额外信息,当执行时,会发生将其转换为架构机器代码的非常简单的过程。这样,C 编译器就可以将其可执行文件编译成通用机器代码,并且可执行文件可以在任何地方运行。