计算机系统是由硬件和系统软件组成的,他们共同工作来运行应用程序。在《深入理解计算机系统》一书中将会学到很多实践的技巧。例如:了解编译器是如何实现过程调用的、避免缓冲区溢出错误带来的安全漏洞、理解并发带来的希望和陷阱等。
源程序的组成:
源程序是由值0和1组成的位序列,8个位被组织成一组,称为字节。
每个字节表示程序中的某些文本字符。
文本文件:
大部分系统都使用ASCII标准来表示文本字符,只由ASCII字符构成的文件称为文本文件。
所有其他文件都称为二进制文件。
目标程序:
目标程序也称为可执行目标文件,目标文件是由编译器驱动程序将源程序转化得到的。
翻译过程分为4个阶段
预处理阶段:将源程序修改位另一种能够编译的程序文件。
编译阶段:将预处理的源程序翻译成汇编语言程序。
汇编阶段:将汇编语言程序翻译成机器语言指令。
了解编译系统如何工作是大有益处的
优化程序性能:一个函数调用的开销有多大?本地变量和引用变量哪个更快?简单的排列括号函数就运行的快很多是什么原因?等等
理解链接时出现的错误:连接器无法解析引用是什么意思?静态变量和全局变量的区别是什么?为什么有些链接直到运行时才出现错误?
避免安全漏洞:缓冲区溢出错误、理解数据和控制信息存储在程序栈中的方式会引起的后果。
原文:https://www.cnblogs.com/wuchangliang/p/11456491.html