helloworld.c 的一次系统旅行(1) 读书笔记

#include <stdio.h>

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

跟随helloworld.c的脚步,来一次操作系统的短暂地观光之旅。

 

这条语句可能被无数地程序员写过,其内在就是一连串地010110...bits 序列, 它们8个一起构成bytes,每一个bytes代表1个 ASCII 字符。比如 35 对应着 ASCII表中的 '#'。 这里阐述了一个基本的概念,就是所有系统里的信息,包括文件、用户的数据、helloworld.c、memory里的信息;其根本都是010100110...。这些数据可能在不同的环境下表示不同的含义,可能是int number, float number, or machine instruction 。下图是helloworld.c 对应的 ascii 码。

 

为了让计算机识别这种高级语言, helloworld.c 会经过以下几个步骤:

 

编译系统完成了四步 c-i-s-o-eo ,首先加载 studio.h 到 program text 中,简称预编译。第二步,转换为汇编语言,包含些机器指令。第三步,将汇编语言转化成机器语言指令,最后一步,生成可执行二进制文件。

当你运行后,结果大概是这样,

那当我们运行这个程序时,到底后面发生了那些不为人知的故事呢?为此,我们得了解下系统的硬件基本结构:

bus 电子管道,在不同的部件中每次来回运送 4bytes (32bits)/8bytes(64bits) 数据。

当我们按下 执行这个编译好的 helloworld.c 文件,操作系统会依次执行以下 3个操作 reading/loading/writing 。

 

 

 

 

hello,world.

 

posted @ 2012-09-06 00:10  小言s  阅读(208)  评论(0编辑  收藏  举报