从程序员的角度看计算机的结构,chapter 0,

来源:互联网 发布:linux 修改grub文件 编辑:程序博客网 时间:2024/05/10 03:37

从程序员的视角来看计算机的结构

一个例子,
hello world,
这个通过c语言编写的程序是以文本文件的方式存储的,文本文件本质上是每个符号通过相应的ASCII代码而对应的二进制表达存储在硬盘上,hard disk,每个英文字符和其他符号有具有相应的ASCII码,
0-255.
一个c语言的源程序(以c为文件的后缀名)是通过以下四个步骤变成可执行文件的,
首先是预处理过程,preprocessing,根据include math.h,stdio.h直接引入头文件相应的类库,引入后仍是一个文本文件。hello.c->hello.i;cpp,hello.imodified source files. preprossor,
第二步是编译,compilation,通过操作系统里的编译器将hello.i这个被修饰的C语言源文件转化为汇编语言编写的源文件(同样也是文本文件),hello.i->hello.s; assemble source files ,assembly program
compiler
第三步是汇编语言的编译,assembler compilation, 通过汇编语言的编译器将汇编语言的源文件转化为目标文件,目标文件是二进制码组成的文件,里面的内容全是机器可执行的指令,
 machine language instructions .如果通过文本预览器阅读的话将会产生乱码,gibberish
hello.s-hello.o,relocatable object program.  action maker :assember.
第四步是链接,在这个过程中,所有库函数对应的二进制表达(这些库函数有相应的已经预编译过的以o结尾的目标文件)将于目标文件合并,hello.o->hello.executable object files , linking phase.

原创粉丝点击