您现在的位置是:主页 > 数据库技术 > 数据库技术

计算机系统源程序编译的方法是什么

IDCBT2022-01-10服务器技术人已围观

简介这篇文章主要介绍“计算机系统源程序编译的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“计算机系统源程序编译的方

这篇文章主要介绍“计算机系统源程序编译的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“计算机系统源程序编译的方法是什么”文章能帮助大家解决问题。

计算机中的信息

对于程序员来说,HelloWorld 程序再熟悉不过了,下面是 C 语言写的 HelloWorld 程序。

#include<stdio.h>

int main()
{
    printf("hello, world\n");
    return 0;
}

这段程序很简单,仅仅是在屏幕上输出hello world,对于程序员很容易阅读,但是从计算机的角度来看,也是这么简单吗?

我们都知道,计算机的世界只有 0 和 1组成的位(比特),这对于人类来说太不友好了,因此计算机科学家们设计了 ASCⅡ 码来表示现实世界的符号。每 8 个位构成一个组(称为一个字节),用一个组来表示一个符号,上面的 C 程序用 ASCⅡ 表示就是下面的样式。

因此对于计算机来说,所有的数据都是由一串比特表示的,要区分这些数据对象的唯一方法就是读到它们时的上下文。

信息 = 位 + 上下文
源程序编译

虽然我们把 C 语言程序编写完成了,但是它并不能运行,因为它目前还仅仅是由 ASCⅡ 字符构成的文本文件,计算机并不能运行文本文件。

想要得到 HelloWorld 的可执行文件,需要经过预处理、编译、汇编、链接四个阶段。

预处理阶段,预处理器会根据以字符#开头的命令去修改源程序,预处理器去读取系统头文件stdio.h中的内容,并将其直接插入程序文本中,结果就得到了另一个 C 程序—— hello.i。

编译阶段,编译器会把 hello.i 程序翻译成汇编语言程序 hello.s,汇编语言本质上就是机器语言,此时的程序仍然是文本文件。

汇编阶段,汇编器会将 hello.s 翻译成机器语言指令,保存在 hello.o 文件中,此时得到的就是二进制文件了。

程序中使用了 printf 函数,这是由编译器提供的标准 C 库中的函数,它存储在 printf.o 文件中,链接器会将这个文件合并到 hello.o 中,结果就得到一个可执行的 hello 文件,存储于磁盘中。

系统组成及程序运行

在运行可执行文件 hello 文件之前,应该先了解一下系统的硬件组成,一个典型系统的硬件组织如下图所示。

为了运行 hello 程序,我们需要在 shell 中输入指令./hello,指令通过键盘经 I/O 总线 --> I/O 桥 --> 总线接口 --> 寄存器 --> I/O 桥存于主存中,当敲击回车键时,等于告诉 shell 程序,命令的属于已经结束, shell 将会执行一系列指令来加载 hello 文件。

标签:

很赞哦! ()

本栏推荐