【问题标题】:Does all code get converted into machine code?是否所有代码都转换为机器代码?
【发布时间】:2016-10-18 23:27:23
【问题描述】:

对于在计算机上运行的程序,是否必须将代码转换为机器代码才能让 CPU 运行? 这是怎么发生的?

【问题讨论】:

  • 这就是它的主要工作方式,但并非总是如此。有时代码不是直接在硬件上运行,而是由另一个程序(解释器)解释,它运行实际的机器代码。

标签: compilation runtime interpreter machine-code


【解决方案1】:

哇!这需要很多解释。 :D 首先,像人类这样的机器有自己的语言,所以我们可以简单地说,如果你想让计算机按你说的那样工作,你必须用它的语言说出来:)

但您可能听说过编译和解释: 编译:将(程序)转换成可以执行程序的机器码或低级形式。

所以基本上这意味着当程序员决定他们完成编程时,代码代码将被转换为可执行文件之类的其他东西。所以如果你用记事本看一个.exe文件,你不能简单地理解任何东西。并且为windows编译的代码,不能在Mac上执行。

解释:代码将在运行时被另一个程序转换。所以代码在最后几秒钟之前都是人类可读的。就像你在这个页面上右击并选择“查看页面源代码”,你可以看到已经为这个页面生成的 HTML 代码。这意味着代码灵活,可以在不同的机器上运行,就像你看到的那样,你可以在你的 Mac、windows 或不同的浏览器(如 chrome、firefox 或 IE)上看到相同的页面,但它会比编译慢很多。

我们在实践中做什么?

我们将我们的代码编译为一种中间语言,该语言可由特定于每台机器的虚拟机理解。

让我用一个例子来解释它。假设有人想在联合国发表演讲,让我们说中文。

如果他将他所有的演讲翻译成不同的语言并提供给人们,那就是在编译。

如果他说话,有人在网上将他的话翻译成法语、英语等,那就是口译。但这很糟糕,而且你可能找不到任何人为多种语言做这件事

如果他在演讲之前将翻译版本(如英文版)提供给翻译,他们可以在演讲者发言时阅读并用不同的语言说出来,那么这就是我们现在所做的:D

您可以在这里阅读更多内容:Runtime vs Compile time

【讨论】:

  • 哇,这比我想象的要复杂。
  • @DeathSwagga 不知道为什么人们会给你负分。可能是因为你问了一个非常广泛的问题,但我不确定:)
  • 或者标签。
  • @DeathSwagga 很好,你的问题得到了 2 分,这意味着你得到了 10 分 :) 那时可能是标签。
  • @DeathSwagga 如果您认为您从我的帖子中得到了答案,请将其标记为答案并投票给它,以便其他人将来可以使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多