摘要:
9.1物理和虚拟寻址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有唯一的一个物理地址,CPU访问内存最自然的方式就是使用物理地址。我们把这种方式叫做物理寻址。 使用虚拟寻址,CPU通过生成一个虚拟地址(Virtual Address, VA)来访问主存,这个虚拟内存在 阅读全文
摘要:
8.1异常 8.1.1异常处理 系统中可能的每种类型的异常都分配了一个唯一的非负整数的异常号(exception number)。其中一些号码是由处理器的设计者分配的,其他号码是由操作系统内核(操作系统常驻内存的部分)的设计者分配的。前者的示例包括被零除、缺页、内存访问违例、断点以及算术运算溢出。后 阅读全文
摘要:
7.1编译器驱动程序 .c文件通过预处理器(cpp)翻译为ASCII码的中间文件.i,然后通过c编译器(cll)翻译成一个ASCII汇编文件.s,之后驱动程序通过汇编器(as)翻译成一个可重定位目标文件,最后运行链接器程序(ld)将.o以及一些必要的系统目标文件结合起来,创建一个可执行目标文件 7. 阅读全文
摘要:
6.1存储技术 6.1.1随机访问存储器 6.1.2磁盘存储 6.1.3固态硬盘 6.1.4存储技术趋势 6.2局部性 6.2.1对程序数据引用的局部性 6.2.2取指令的局部性 6.2.3局部性小结 6.3存储器层次结构 6.3.1存储器层次结构中的缓存 1. 缓存命中 2.缓存不命中 3.缓存不 阅读全文
摘要:
5.1优化编译器的能力和局限性 5.2表示程序性能 我们更愿意用每个元素的时钟周期而不是每个循环的时钟周期来度量,这是因为像循环展开这样的技术使得我们能够用较少的循环来完成计算 5.3程序示例 5.4消除循环的低效率 5.5减少过程调用 5.6消除不必要的内存引用 5.7理解现代处理器 5.7.1整 阅读全文
摘要:
4.1Y86-64指令集体系结构 4.1.1程序员可见的状态 4.1.2Y86-64指令 4.1.3指令编码 4.1.4Y86-64异常 4.2逻辑设计和硬件控制语言HCL 4.2.1逻辑门 4.2.2组合电路和HCL布尔表达式 4.2.3字级的组合电路和HCL的整级表达式 4.2.4集合关系 4. 阅读全文
摘要:
3.3数据格式 |C声明|Intel数据类型|汇编代码后缀|大小(字节)| |-|-|-|-| |char|字节|b|1| |short|字|w|2| |int|双字|l|4| |long|四字|q|8| |char*|四字|q|8| |float|单精度|s|4| |double|双精度|l|8| 阅读全文
摘要:
第二章 2.1.3寻址和字节顺序 #include <stdio.h> typedef unsigned char *byte_pointer; void show_bytes(byte_pointer start,size_t len){ size_t i; for(i=0;i<len;++i) 阅读全文
摘要:
站在对象模型的尖端 7.1Template Template的“实例化”行为 一个class object的定义会导致template class的“实例化”,但未被使用的member functions不应该被“实例化” 实例化具体时间不做要求,可在编译期也可在链接期。 对于编译器在它被一组实际参 阅读全文
摘要:
执行期语意学 6.1对象的构造和析构 把object尽可能放在使用它的那个程序区段附近,这么做可以节省非必要的对象产生操作和摧毁操作 全局对象 相比C,C++会把所有的global objects都放置在程序的data segment中,如果显式指定一个值,该object将以该值为初值,否则置为0( 阅读全文