语言的最终产物是什么?

发布于 2022-09-04 17:31:57 字数 526 浏览 16 评论 0

计算机其实是一系列逻辑门电路的集合。我萌生了一个想法,而查阅各种资料无果。。

想法如下了:

CPU在设计完成之后都会提供一组“0 1”指令集用以去操作CPU,进而操作整部计算机。
所以语言的最终产物,就是这些“0 1”指令集的集合(稍微注意下 ~ 这里指令集说的是 CPU 指定的“ 0 1 ”组合,而不是杂论无序的 0 1 ),而无论是汇编语言还是高级语言。。

各个CPU即使有展示自己特性的CPU指令集,但是由于提供了一个公共,通用的指令集,所以这就造就了一些高级语言比如C的可移植性,而如果汇编也只使用这些通用的指令集的话,那么汇编也可以移植(一万个网页中,一万个说汇编不可以移植)。

以上想法纯属猜测,,但十分想知其正确与否而不得。。所以还请各位大侠指点一二,感激不尽!!

我还很想知道语言的编译器(解释器)到底是如何把英文字母转化为 0 1 的,因为编译器是运行在计算机上的,所以无论如何,计算机面对的是英文字母。。如果说手动编译的话,我觉得我也可以对照着一张表把 mov 当做 0 1 的一种组合的。但是运行在计算机上的编译器到底是如何做到的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

向地狱狂奔 2022-09-11 17:31:57

汇编就是不可移植的,因为都是针对底层平台的指令集,而每套指令集都有各自平台的特性,没法通用(抽象度不够高)。但是你说的这种东西(“可移植的汇编”)我觉得应该类似于java 字节码或者.Net IL,它们各自实现了一套平台无关的指令集,你可以看看相关的资料。

第二个问题太大了,应该是与编译原理相关的内容吧。

初相遇 2022-09-11 17:31:57

有兴趣可以玩玩单片机。单片机的电路跟电脑的没法比简单太多了,然而即便如此,不同的单片机之间都很难移植代码,更何况计算机这么复杂的电路。

关于编译器那里,你可以去看看《编译原理》,你甚至可以自己DIY一个CPU出来编译你的汇编代码。

然而这世界上的每一个技术都是博大精深的,所以学习前分清主次和方向,事无巨细对每件事都刨根问底不是不好,可惜生命太短暂。真想再活500年,哈哈!

夕色琉璃 2022-09-11 17:31:57

推荐一个相关阅读:https://www.cnblogs.com/index...,浅显易懂的用例子解释了楼主的最后一个问题

关于平台的通用,x86指令集应该都是一样的,所以一个windows下的exe就可以随意地运行在任意的windows下,但是却没法运行在同样硬件平台上的ubuntu系统。所以我觉得可移植性的问题应该不只是底层的指令集的兼容。
至于x86和ARM,底层指令集都不一样,就没什么可移植性可说的了,但是可以通过java或者.net或者nodeJS的方法来实现比较高层的兼容和可移植。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文