摘要: 高速缓存存储器 在存储层次结构中, 高速缓存存储器 ,也叫 cache 是最接近 CPU 寄存器的那一块。 更一般而言, 缓存 (caching)是一个无所不在的技术。缓存的意思是:对于每层的存储设备,位于 k 层的更快更小的存储设备,都能用作位于 k+1 层的更大更慢的存储设备的缓存,这也是存储器 阅读全文
posted @ 2017-08-27 19:34 畅畅1 阅读(1279) 评论(0) 推荐(0) 编辑
摘要: 在没有专门研究存储器系统之前,我们依赖的存储器模型是一个很简单的概念,也就是把它看成一个线性数组,CPU 能在一个常数时间内访问任何一个存储器位置。虽然在研究别的问题时,这是一个有效的模型,但是它不能反映存储器系统的实际工作方式。 存储器系统 (memory system)是一个具有不同容量、成本、 阅读全文
posted @ 2017-08-27 19:10 畅畅1 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 写程序的主要目标是使它在所有可能的情况下都能正确运行(bug free),一个运行得很快但有 bug 的程序是毫无用处的。在 bug free 的基础上,程序员必须写出清晰简洁的代码,这样做是为了今后检查代码或修改代码时,其他人能够读懂和理解代码。另一方面,让程序运行得更快也是一个很重要的考虑因素。 阅读全文
posted @ 2017-08-27 19:09 畅畅1 阅读(614) 评论(0) 推荐(0) 编辑
摘要: x86 64 Linux 内存结构 先来看看一个程序在内存中是如何组织的。Linux 为每个 进程 维持了一段单独的虚拟地址空间。(进程是计算机科学中很深刻、很成功的一个概念。当我们在运行一个程序时,会得到一个假象,好像我们的程序是系统当中运行的唯一程序,独占存储器和处理器资源。) 1. 最上面是栈 阅读全文
posted @ 2017-08-27 19:00 畅畅1 阅读(1780) 评论(0) 推荐(0) 编辑
摘要: 下面介绍一些C语言中常见的特殊的数据存储方式,以及它们在汇编语言中是如何表示的。 数组 数组是一种将标量数据聚集成更大数据类型的方式。实现数组的方式其实十分简单,也非常容易翻译成机器代码。C语言的一个特点是可以产生指向数组元素的指针,然后可以对这些指针进行运算。 数组的基本原则如下: 对于数组的声明 阅读全文
posted @ 2017-08-27 02:19 畅畅1 阅读(1296) 评论(0) 推荐(0) 编辑
摘要: 一个过程调用包括将数据(以 参数 和 返回值 的形式)与控制从代码的一部分传递到另一部分。除此之外,在进入时为过程的局部变量分配空间,在退出的时候释放这些空间。数据传递、局部变量的分配和释放通过操纵程序栈来实现。栈作为一种能够实现先进后出、后进先出的数据结构,非常适合用于实现函数调用以及返回的机制。 阅读全文
posted @ 2017-08-27 02:11 畅畅1 阅读(3765) 评论(0) 推荐(2) 编辑
摘要: 到目前为止我们只考虑了直线代码的执行行为,也就是指令一条接着一条执行。C语言中的某些语句,比如条件语句、循环、分支语句,要求有条件地执行,或根据某些表达式的结果决定操作的顺序。机器代码提供基本的低级机制来实现有条件的行为:测试数据值,然后根据测试结果来改变 控制流 或 数据流 。 先介绍通过控制流来 阅读全文
posted @ 2017-08-27 02:05 畅畅1 阅读(2113) 评论(0) 推荐(0) 编辑