写在前面
最近有个项目需要:在codewarrior上实现两个设计上割裂的功能之间相互调用,想要完成这个简单的功能,我进行了以下努力:
- 先去了解汇编,得到了一种原理上的可行性;
- 在codewarrior上试图实现c和汇编进行混编,结果被告知需要研究官方提供的说明文档;
- 官方的说明文档的阅读需求需要编译原理的相关基础;
- 调研编译原理,购买了本《编译原理》,但是向有经验的前辈请教时,被告知阅读编译原理时,最好有《计算机组成原理》方面的基础。
综上所述,争取在编译原理未寄来之前,对《深入理解计算机系统》这本书有个预览。
1 第1章总结
计算机系统是由硬件和系统软件组成的,他们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据不同的上下文又有不同的解释方式。程序被其他程序翻译成不同的形式,开始是ASCII文本,然后被翻译器和链接器翻译成二进制可执行文件。
处理器读取并解释存放在主存里的二进制指令。因为计算机花费了大量的时间在存储器,I/O设备和CPU寄存器之间拷贝数据,所以系统中的存储设备就被按层次排列,CPU寄存器在顶部,接着是多层的硬件告诉缓存存储器,DRAM主存储器和磁盘存储器。在层次模型中位于更高层的存储设备比低层的存储设备要快,单位比特造价也更高。程序员通过理解和运用这种存储层次结构的知识,可以优化他们C程序的性能。
操作系统的内核是应用程序和硬件之间的媒介。它提供三个基本的抽象概念:文件是对I/O设备的抽象概念。
最后,网络提供了计算机系统之间通信的手段。从某个系统的角度来看,网络就是一种I/O设备。