我一直在考虑机器代码如何特定于架构以及Javascript如何在(几乎)每个浏览器中工作。 我一直在研究一个必须做一些严肃计算的项目,它是基于Javascript的,需要一分钟才能完成计算。它让我渴望C的速度。但是项目使用Javascript的全部原因是为了简单和便携。
这给了我一个想法,如果有一种类似于Javascript的语言,就像在每个架构上一样可移植并作为可执行文件运行,该怎么办? 大多数人会指向Java,但我正在考虑一些开销较少且由操作系统处理的东西。不是字节代码,而是本地机器代码。
进行了一些研究和思考,以实现这项任务的不可能性。您如何制作一个像普通C编写的应用程序一样小的可执行文件,该应用程序适用于每个体系结构的特定体系结构,其速度与在C中为该体系结构进行本机编译相同?
这是我的下一个想法。本机机器代码特定于架构,每个架构都具有某些特殊功能,有时以不同方式处理相同的任务。某些优化也是针对每个体系结构的。 如果有通用机器代码怎么办?当操作系统将指令加载到ram中时,它会自动转换指令以适应架构。或许(更疯狂的想法)CPU可以包含接收通用机器代码并自动将通用机器代码调整到其本机代码中的能力?
通用机器代码规范必须足够通用,以涵盖正常的机器代码功能。
当然,如果通用机器代码确实有效,人们可能会想要一个由所有操作系统处理的通用可执行格式。这样,可执行文件不需要在OS上进行更改。这导致需要专门针对机器进行通用的框架。更多的细节将是操作系统特定的功能,输入和输出的能力超出我所知的范围。
Universal Machine Code编译可执行文件:
优点:
缺点:
可行吗?
编辑:
我使用过Java,在其中制作游戏。它不像我想的那样普遍,也不像友好。 *它是由Oracle维护的自己的编程语言。专有和有点太大。需要在某些机器上安装。
更具体地说,我不是在谈论使用新的编程语言。我正在谈论拥有一种新的机器代码语言,该语言拥有足够的额外信息,在执行时,会将一个非常薄的过程转换为架构的机器代码。 这样C编译器就可以将它们的可执行文件编译成通用机器代码,并且可执行文件可以在任何地方运行。
答案 0 :(得分:6)
答案 1 :(得分:3)
Lambda演算和/或图灵机。其他一切都只是语法糖。
答案 2 :(得分:3)
您不会让芯片供应商同意通用机器代码。一个供应商无法用一个新的机器代码接管世界,否则他们就会拥有(ARM差不多但实际上它最终不会)。
在今天的专利诉讼中,你甚至无法制作一个VLIW处理器,并且在一个薄的软件层中模仿各种指令集,无论如何你无法接管世界,你能说transmeta吗?
所以你在软件中遇到了翻译......所以它可以追溯到JAVA的“已经尝试过的”和过去几十年的p代码(pascal),以及python正在做什么等等。甚至llvms字节码也是如此。
您对“每台机器上的速度相同”的要求不会发生。
您已经在javascript中使用了最便携的语言,它的速度和它一样快。 C是你所追求的通用语言,它相当快并且可以在任何地方运行(比任何其他语言更多),问题是操作系统,而不仅仅是用户界面。