一.计算机体系结构图
二.以一个hello.c程序为例,展示其执行过程
1.经编译系统处理,成为可执行目标程序
(1)预处理阶段
预处理器根据以#开头的命令,读取头文件。
(2)编译阶段
将文本文件hello.i变成hello.s。(高级语言到汇编语言)
(3)汇编阶段
将文本文件hello.s翻译成机器语言指令,变成二进制文件hello.o。(汇编语言到机器语言)
(4)链接阶段
与某些库链接,得到可执行文件,hello.o变成了hello,可以放到内存中执行。
2.编译通过后,输入待运算的值
程序初始时等待我们输入一个命令,当在键盘上输入一个字符串“/hello”后,程序将字符逐一读入寄存器。
3.待处理数据与目标程序放入内存
(1)程序将字符串从寄存器读入内存。
(2)当我们在键盘上敲回车键时,程序就知道我们已经结束了命令的输入。然后程序执行一系列指令来加载可执行的 hello 文件,这些指令将 hello 目标文件中的代码和数据从磁盘复制到内存。数据包括最终会被输出的字符串“Hello,world\n"利用直接存储器存取(DMA),数据可以不通过处理器而直接从磁盘到达内存。
3.程序与数据汇合,处理器开始处理
一旦目标文件 hello 中的代码和数据被加载到内存,处理器就开始执行 hello 程序 的 main 程序中的机器语言指令。这些指令将“Hello,world\n"字符串中的字节从内存复制到寄存器文件。
4.处理结果输出
再从寄存器文件中复制到显示设备,最终显示在屏幕上。
参考文献:
《深入理解计算机系统》机械工业出版社
原文链接:https://blog.csdn.net/qq_53162179/article/details/123626248