整站优化

当前位置:

helloworld这些信息是如何通显示器过显示的?

浏览量:

开始

学习任何编程语言都将从“ hello world”开始。对于以前从未接触过的语言,我们可以在很短的时间内用这种语言写一个问候世界。但是,对于这个简单的程序问候世界的内部运行机制,我相信很多人都不是很清楚。

显示器上如何显示您好世界信息? cpu执行的代码肯定与我们在程序中编写的代码不同。它是什么样子的?我们编写的代码如何变成cpu可以执行的代码?程序运行时代码在哪里?他们是如何组织的?程序中的变量存储在哪里?函数调用如何出现?本文将简要讨论该程序的运行机制。

开发平台的隐藏过程

每种语言都有自己的开发平台,我们的大多数程序都在这里诞生。从程序源代码到可执行文件的转换过程实际上分为许多步骤,并且非常复杂,但是当前的开发平台独自承担了所有这些事情,这给我们带来了便利并且也将其隐藏了。许多实施细节。因此,大多数程序员只负责编写代码,而其他复杂的转换任务则由开发平台以静默方式完成。

根据我的理解,从源代码到可执行文件的过程可以分为以下几个阶段:

1、从源代码到机器语言,并根据某些规则组织生成的机器语言。现在我们将其称为文档A。

2、将文件A与文件B(例如库函数)链接起来,以运行文件A以形成文件A +

3、将文件A +加载到内存中,运行文件

(实际上,如果您正在阅读参考书或其他材料,可能不止这些步骤,但为简单起见,这里我将其概括为3个步骤)

这些东西构成了可执行文件的关键步骤,它们都不是必不可少的。现在您将看到开发平台对其“视而不见”。以下部分将消除迷雾并返回您开发平台的真实面貌。

目标文件

计算机领域有句经典话:

“计算机科学中的任何问题都可以由另一层直觉来解决”

“计算机科学领域的任何问题都可以通过添加中间层来解决”

例如,要实现从A到B的转换,您可以首先将A转换为文件A +,然后将所需的文件A +转换为文件B。 (实际上,这种方法在Polya的“如何解决它”中也有介绍。解决问题时,可以通过添加中间层来简化问题)

然后可以通过这种方式理解从源代码到可执行文件的过程。从源代码到可执行文件也是如此,而问题是通过(连续)在它们之间添加中间层来解决的。

如上所述,首先将源程序转换为中间文件A,然后将中间文件转换为我们需要的目标文件。

在处理文件时,我们遵循以下思路。

实际上,上述文件A更专业地说:目标文件。它不是可执行程序,必须先链接并与其他目标文件一起加载,然后才能执行。对于源程序,开发平台要做的第一件事是将源程序翻译成机器语言。最重要的之一是编译。我相信很多人都知道源代码已翻译成机器语言(实际上,它是一堆二进制代码)。编译知识非常重要,但这不是本文的重点。如果您有兴趣,则可以自己搜索Google。

目标文件格式:

现在让我们看一下上述目标文件的组织方式(即存储结构)。

来源:

想象一下,如果您要设计二进制代码,它将如何组织?就像需要整理桌子上的物品并使其整齐一样,为了便于管理已翻译的二进制代码,也对它们进行了整理和存储。将代码和数据放在一起。这样,二进制代码被分为不同的块进行存储。这样的区域就是所谓的路段。

标准:

就像计算机科学中的许多事物一样,为了促进人们的交流,程序兼容性和其他问题。还为这种二进制存储方法制定了标准,因此诞生了COFF(通用目标文件格式)。在主流操作系统(例如Windows,Linux和COFF)下,当前的目标文件格式与COFF相似,可以认为是它的一种变体。

a.out:

a.out是目标文件的默认名称。换句话说,在编译文件时,如果未重命名已编译的目标文件,则在编译后将生成名为a.out的文件。

此处将不研究使用此名称的具体原因。如果您有兴趣,可以自己在Google上搜索。

下图可以使您更直观地了解目标文件:

[声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【83030543@qq.com】,我们在确认后,会立即删除,保证您的版权。