代码如下:(c语言)
#include <stdio.h>
int main()
{
printf ("hello,world\n ");
return 0;
}
一.编译器将代码转换为ASCII码
hello程序的生命周期是从一个源程序(或者是说源文件开始的)
即程序员通过编辑器创建并保存的文本文件,文件名取为hello.c。源程序实际上就是一个 由值0和1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。大部分的现代计算机系统都使用ASCII标准来表示文本字符,这种方式实际上就是用一个唯一的单字节大小的整数值来表示每个字符。比如,下图所示给出了hello.c程序的 ASCII码表示。
hello.c程序是以字节序列的方式储存在文件中的,每个字符都有一个整数值,对应于某些字符。每一行都是以一个看不见的换行符 ‘\n’ 来结束的,它所对应的整数值为10.像hell.c这样只由ASCII字符构成的文件称为文本文件。
二.编译器驱动程序将ASCII码转换为二进制
为了在系统上运行hello.c程序,会将ASCII码转换为一系列的低级机器语言指令(也就是转换为二进制)。然后这些指令按照一种称为可执行的目标程序的格式打好包,并以二进制磁盘文件的形式存放在磁盘。
翻译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行的目标文件hello,这个翻译过程可分为四个阶段完成(预处理-----编译器------汇编器-----链接器)这里就不详细展开了
三.把磁盘的代码和数据加载到主存
当我们开始编译运行代码的时候,系统会执行一系列指令来加载可执行的hello文件,这些指令将hello目标文件中的代码和数据从磁盘复制到主存。
如下图所示:
四.显示结果
一旦目标文件hello中的代码和数据被加载到主存,处理器就开始执行hello程序的main程序中的机器语言指令,这些指令将 "hello,word\n"字符串中的字节从主存复制到寄存器文件,再从寄存器文件中复制到显示设备。最终显示在屏幕上。这个步骤如图所示:
我是根据自己的理解描述的这个过程,也不知道对不对,如果有不全以及错误的,欢迎补充和指正。
感谢!!!!!!!!