ProgrammingGroundUp第二章中文版.doc_第1页
ProgrammingGroundUp第二章中文版.doc_第2页
ProgrammingGroundUp第二章中文版.doc_第3页
ProgrammingGroundUp第二章中文版.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章计算机体系结构在学习如何编程之前,你需要先了解计算机如何解释程序的。现代计算机体系建立于冯诺依曼体系结构。它将计算机分为两个主要部分:CPU和内存。这种体系应用于个人计算机、超级计算机、大型机甚至手机。计算机内存结构为了理解计算机如何对内存的,假象你当地的邮局,它们通常有一间房子,里面放着邮局信箱。这些信箱就类似于计算机内存,被按顺序标号以规定大小储存。例如,你有256MB的计算机内存,那意味着你的计算机包含大约256百万规定大小的存储单元。或者,类比于256百万的邮箱。每个单元有一个数字,每个单元有相同固定大小的尺寸。邮箱和内存的区别在与你能存储各种东西在邮箱,然而你只能在内存存储单元中中存储一个简单的数字。你也许会问为什么计算机这样组织?这是因为这样实行起来很简单。如果计算机包含许多不同大小的单元,或者你能在它们里存放各种数据,这将会使实行变得复杂且昂贵。内存用来做各种事。所有计算结果都存储在内存中。屏幕上光标的位置屏幕上窗口的尺寸各种你多使用字体的字母的形状每个窗口的控制布局工具栏图标的图形化每个错误框和对话框的文本还有很多除了这些,冯诺依曼体系结构不仅规定了计算机数据应放在内存,还规定控制计算机操作的程序也要放在那儿。事实上,程序和数据除了在如何被计算机使用上有区别外没有其他区别。它们以相同方式被存储和使用。中央处理器那么计算机如何运行的呢?显然,仅是存储数据不行。你需要能使用、操作和移动它。那是CPU做的。CPU从内存读取指令并执行。这就是广为人知的读取执行周期。CPU包含以下部件来实现读取存储周期:程序计数器 Program Counter指令译码器Instruction Decoder数据总线 Data Bus通用寄存器 General-purpose registers算术逻辑单元 Arithmetic and logic unit程序计数器告诉计算机到哪里取下一条指令。CPU通过观察PC为开始,并且取特定内存单元的数字。数字被传到指令译码器,译为指令。这包括进程需要发生的条件以及与内存单元在这个进程上相关的东西。计算机指令通常包含指令和一系列被用来搬运的内存单元。现代计算机使用数据总线来取得将要在计算中使用的内存单元。数据总线是CPU和内存之间连接的桥梁。他们之间有实际的线。如果你看计算机的底板,从内存中出来的线就是你的数据线。除了内存在处理器外边,处理器有自己特殊的、高速的内存单元,它们被成为寄存器。分为通用寄存器和专用寄存器。通用寄存器是主要计算发生的地方。加减乘除和其他操作通常使用通用寄存器来计算。然而计算机的通用寄存器很少。大多数信息存储在主存中,需要运行时送到寄存器,运行完再送回存储器。专用寄存器有专门用处。我们用到时再讨论。既然CPU接受了它需要的所有数据,它将数据和指令传给数据逻辑单元进行进一步的运算。在数据逻辑单元里,指令被真正地执行。计算结果运行后,结果被放置到数据总线上并被送到适当的内存单元或者寄存器,当然到底到哪儿指令会告诉计算机。这是一个简化了的解释。近年来处理器发展很快,现在很复杂。尽管基本操作还是一样的,但是缓存分层、超标量体系结构、多处理器、协处理和其它优化很复杂。一些术语计算机内存是有标号顺序的规定大小存储单元。附在每个存储单元的数字成为它的地址。一个简单的存储单元大小成为一个byte。在x86处理器中,一个字节是介于0到255之间的一个数字。你也许会问虽然计算机能做的是存储0到255的数字,那么他们是如何显示和使用文本、图像甚至大数字的?首先,特定的硬件如显示卡采用特殊的翻译方式翻译数字。当在屏幕上显示时,计算机使用你正在传送的数字的ASCII码来在屏幕上显示,它将每个数字译为确定的字母或数字。除了用数字表示ASCII字符外,你作为程序员要使数字可以表示你想要的任何意思。例如,如果我开了一商店,我用数字表示我卖的产品的条目。每个数字将被联系到一系列其他数字,就像ASCII码一样作为我想显示的字符的标识。那么要是我们需要大于255的数字怎么办。两个字节可表示065536,四个字节可表示04294967295。然而,编写把字节合在一起的程序来增加数字的尺寸很难,这需要数学知识。幸运的是,计算机默认的是4个字节的数。寄存器是计算机用来计算的。想象一个寄存器在你桌上,它放置着你现在正在使用的东西。你可以有很多信息藏在文件夹或者抽屉里,但是你正在使用的物件在桌上。寄存器保存着你正在操作的数字的内容。我们使用的计算机的寄存器都是四个字节的。x86处理器有四字节的字。这意味着一次做4字节的计算很自然。寻址也是按照字的。因此也适合寄存器。x86可以有4294967296字节只要足够的内存安装了。注意这意味着我们存储地址可以象存储其他数字一样的方式存储地址。事实上,计算机无法分辨它是地址、数字、ASCII码还是什么东西。当你想显示时,数字成为ASCII码。好好想想这些,因为这对理解程序如何运行至关重要。存储在内存中地址也被称为指针,因为它不只是一个数字,还指向另一个内存单元。正如我们提到的,计算机指令也在内存中存放着。事实上,它们象其他数据一样地存放着。计算机知道一个存储单元是指令的唯一当时是一个专用寄存器用指令指针IP指向它。如果IP指向一个内存的字,它被加载为一个指令。解释内存 Interpreting Memory计算机很精确。所以程序员们也要精确。计算机不知道你的程序要做什么。因此,只有你告诉它怎么做。如果你不小心输出一个常规数字而不是组成数字位的ASCII码,计算机将让你做。如果你告诉计算机在包含数据而不是指令的地方开始执行指令,它将尝试执行。计算机将执行你的指令按你指定的方式,即使你指定的没有意义。关键在于,计算机将按你告诉它的去做,不管这有没有意义。因此,作为一个程序员,你需要精确知道你的数据在内存中是如何安排的。记住,计算机只能存储数字,所以字母、图片、音乐、网页、文档以及其他一切在计算机里只是长长的有顺序的数字,只有特定程序知道如何翻译。变长数据通常分开存储在记录的其他地方。否则,不同的长度使找寻下一个记录的开始处很难。这种情况通常可以用指针指向变长变量的开头。数据存取方法 Data Accessing Methods处理器有许多不同的方式来存储数据,被称为寻址方式。最简单的模式为立即寻址。寄存器寻址。直接寻址。相对寻址。间接寻址。基址寻址。基址寻址:offset是个常量,pointer存在寄存器。相对寻址:offset存在寄存器,pointer个是常量。回顾:概念:描述读取执行周期寄存器的概念。没有寄存器,计算有多难?如何表示大于255的数字?计算机如何翻译一个字节或是内存的一组字节?寻址模式及其用处指令指针作用使用概念:在员工记录中你使用什么数据来描述?在内存中你如何布局这些数据?指针如果我有员工记录开始的指针,想读取其中一个特定的数据,什么寻址方式?基址寻址模式在基址寻址模式中,如果你有一个寄存器存着3122,偏移量为20,你将访问的地址是?3140在相对寻址模式中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论