程序运行流程——准备篇
2010-11-19 22:33
239 查看
已经忘了第一次写c语言程序到底是什么时候的事了。不过我却明白,当时我肯定是知其然而不知所以然。不知从什么时候开始对程序执行背后的东西感兴趣了,而且愈演愈烈,现在终于下定决心去搞明白它了。
就以c语言中最经典的例子来说明吧:
编译: 编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后生成的汇编代码文件。
汇编: 将汇编文件翻译成机器指令,并打包成可重定位目标程序的O文件。该文件是二进制文件,字节编码是机器指令。
链接: 将引用的其他O文件并入到我们程序所在的o文件中,处理得到最终的可执行文件
硬件组成:
从下图中看出一个典型的系统由总线、Cpu、I/O设备、主存等构成。
在这里我们只是先睹为快,后面真正执行时会大量设计cpu与主存、磁盘的交互。。。
程序的运行:
程序的链接、装载及运行非常复杂,下一篇将丝丝入扣地剖析它。。。
就以c语言中最经典的例子来说明吧:
# 1 "hello.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "hello.c" # 1 "/usr/include/stdio.h" 1 3 4 # 28 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/features.h" 1 3 4 ... typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; __extension__ typedef long long int __quad_t; __extension__ typedef unsigned long long int __u_quad_t; # 131 "/usr/include/bits/types.h" 3 4 # 1 "/usr/include/bits/typesizes.h" 1 3 4 # 132 "/usr/include/bits/types.h" 2 3 4 ... __attribute__ ((__nothrow__)); # 912 "/usr/include/stdio.h" 3 4 # 2 "hello.c" 2 int main(void) { printf("Hello, world!/n"); return 0; }
编译: 编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后生成的汇编代码文件。
汇编: 将汇编文件翻译成机器指令,并打包成可重定位目标程序的O文件。该文件是二进制文件,字节编码是机器指令。
链接: 将引用的其他O文件并入到我们程序所在的o文件中,处理得到最终的可执行文件
硬件组成:
从下图中看出一个典型的系统由总线、Cpu、I/O设备、主存等构成。
在这里我们只是先睹为快,后面真正执行时会大量设计cpu与主存、磁盘的交互。。。
程序的运行:
程序的链接、装载及运行非常复杂,下一篇将丝丝入扣地剖析它。。。
相关文章推荐
- ffplay程序运行流程分析
- java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)
- Windows程序运行原理及程序编写流程
- MFC对话框程序的运行流程
- 基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程(之一)——介绍、安装准备、安装、config文件以及运行脚本介绍
- Java程序编写及运行准备工作
- 本地Spark程序提交到hadoop集群运行流程
- CCNA考试考试流程|考前准备|再认证体系及程序
- 终端下编译运行一个简单C++程序流程
- [李景山php]每天TP5-20161215|thinkphp5的程序加载运行流程【图】
- Java程序运行机制及cmd编译运行探究(一)准备工作
- Linux下程序的加载、运行和终止流程 .
- C#程序运行流程
- 试图搞懂MDK程序下载到Flash(一)--Nand Flash启动流程,加载域和运行域
- Win32程序的开发流程和运行图解
- iOS程序运行流程
- 程序运行后占用CPU高的处理流程
- web程序运行的基本流程
- MapReduce程序运行流程
- 1、Windows程序运行原理及程序编写流程