作者:empty 页数:729 出版社:empty |
本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的本书适合作为高等院校计算机及相关专业本科生、研究生的教材,也可供想要写出更快、更可靠程序
出版者的话Cmputer Systems; A Prgrammer's Persp active . 28文艺复兴以降,源远流长的科学精神和逐步形成的学术规范,使西方国家在自然科学的各个领城取得了垄断性的优势;也正是这样的传统,使美国在信息技术发展的六十多年间名家辈出、独领风骚。在商业化的进程中,美国的产业界与教育界越来越紧密地结合,计算机学科中的许多泰山北斗同时身处科研和教学的最前线,由此而产生的经典科学著作,不仅擘划了研究的范畴,还揭示了学术的源变,既遵循学术规范,又自有学者个性,其价值并不会因年月的流逝而减退。近年,在全球信息化大潮的推动下,我国的计算机产业发展迅猛,对专业人才的需求日益迫切。这对计算机教育界和出版界都既是机遇,也是挑战;而专业教材的建设在教育战略上显得举足轻重。在我国信息技术发展时间较短的现状下,美国等发达国家在其计算机科学发展的几十年间积淀和发展的经典教材仍有许多值得借鉴之处。因此,引进一批国外优秀计算机教材将对我国计算机教育事业的发展起到积极的推动作用,也是与世界接轨、建设真正的世界一流大学的必由之路,机械工业出版社华章公司较早意识到“出版要为教育服务”.自1998年开始,我们就符工作重点放在了遴选、移译国外优秀教材上。经过多年的不懈努力, 我们与Pearsn, McGraw-Hill,Elsevier, MIT, Jhn Wiley&Sns, C engage等世界著名出版公司建立了良好的合作关系, 从他们现有的数百种教材中甄选出AndrewS.Tanenbaum, Bjarne Strustrup, Brain W.Kemi ghan,Dennis Ritchie, Jim Gray, A fred V.Ah, Jhn E, Hpcrft, Jeffrey D.Ullman, AbrahamSilberschatz, William Stallings, Dnald E.Knuth, Jhn L.Hennessy, L any L.Petersn等大师名家的一批经典作品,以“计算机科学丛书”为总称出版,供读者学习、研究及珍藏。大理石纹理的封面,也正体现了这套丛书的品位和格调。“计算机科学丛书”的出版工作得到了国内外学者的鼎力襄助,国内的专家不仅提供了中肯的选题指导,还不辞劳苦地担任了翻译和审校的工作:而原书的作者也相当关注其作品在中国的传播,有的还专程为其书的中译本作序,迄今,“计算机科学丛书”已经出版了近两百个品种,这些书籍在读者中树立了良好的碑,并被许多高校采用为正式教材和参考书籍,其影印版“经典原版书库”作为姊妹篇也被越来越多实施双语教学的学校所采用,
译者序权威的作者、经典的教材、一流的译者、严格的审校、精细的编辑,这些因素使我们的图书有了质量的保证。随着计算机科学与技术专业学科建设的不断完善和教材改革的逐渐深化,教育界对国外计算机教材的需求和应用都将步人一个新的阶段,我们的目标是尽善尽美,而反馈的意见正是我们达到这一终极目标的重要帮助。华章公司欢迎老师和读者对我们的工作提出建议或给予指正,我们的联系方法如下:华章网站:www.hzbk.cm电子邮件:hzjsj@hzbk.cm联系电话:(010)88379604M RiG联系地址:北京市西城区百万庄南街1号华章教育邮政编码:100037华章科技图书出版中心
本书通过程序员的视角来介绍计算机系统,首先把高级语言转换成计算机所能理解的一种中间格式(如汇编语言),然后描述计算机如何解释和执行这些中间格式的程序,系统的哪一部分影响程序的执行效率。在讲述计算机系统知识的同时,也给出了关于C语言和汇编语言的编程、阅读技巧以及基本的系统编程工具,还给出一些方法帮助程序员基于对计算机系统的理解来改善程序的性能等问题,本书强调对计算机系统概念的理解,但并不意味着不动手。如果按照本书的安排做每一章后面的习题,将有助于加深对正文所述概念和知识的理解,更可以从实际动手中学习到新的知识。本书的主要内容是关于计算机体系结构与编译器和操作系统的交互,包括;数据表示,汇编语官和汇编级计算机体系结构,处理器设计,程序的性能度量和优化,程序的加载器、链接器和编译器,I/和设备的存储器层次结构,虚拟存储器,外部存储管理,中断、信号和进程控制。本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示(如大多数程序员一直陌生或疑惑的浮点数表示),到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用,贯申本书的一条主线是使程序员在设计程序时,能充分意识到计算机系统的重要性,建立起所写程序可能被执行的数据或指令流图,明白执行程序时到底发生了什么事,从而能设计出高效、可移植、健壮的程序,并能够更快地对程序排错、改进程序性能等。原书是卡内基一梅隆大学(CMU) 的教材, 现在很多国内外著名的大学也选用其作为教材或辅助性资料,因此,本书的读者不仅仅是那些因为工作和兴趣而关注本书的人,还包括一些在校的大学生。我们认为,在校学生越早接触本书的内容,将越有利于他们学习计算机的相关课程,培养对计算机系统的研究兴趣。总的来说,本书是一座桥梁,它帮助程序员衔接了计算机系统各个领城的知识,为程序员构造了一个概念性框架。要想获取更多关于计算机系统结构、操作系统、编译器、网络、并发编程方面的知识,还需要进一步阅读相关书籍。本书第2版距第1版出版已有7年时间了,由于计算机技术的飞速发展,第2版相对于第1版做了大量的修改。首先,针对硬件技术和编译器技术的变化,第2版对系统的介绍,特别是实际使用部分,做了增加和修改。例如,既保持了原有的针对32位系统的说明,又增加了对64位系统的描述,其次,第2版增加了很多关于由算术运算溢出以及缓冲区镂出造成安全漏润的内容,第三,更详细地讲述了处理器对异常的发现和处理,这是计算机系统中的一个重点和难点。第四, 对存储器的描述改为了基于Intel Cre i 7处理器的存储器层次结构, 还增加了固态硬盘的内容,第五,强调了并发性,并发性既体现在处理器的实现中,也体现在应用程序编程中。这次我们不仅对第2版较第1版有改动之处做了仔细的翻译,而且对第1版的译稿做了重新审视和校正,更加精益求精。比如,在保证原意正确的情况下,对一些句式做了变动,尽量减少被动语态的使用等,以符合中国人的阅读习惯。再如,根据我们这几年教授“计算机体系结构”课程的经验,改变了某些术语的翻译,使之更接近于中文教科书中的术语使用。
这个词,如果根据上下文,它表示的是一个运算,我们就翻译成运算符:如果它对应于一个操作, 我们就翻译成操作符。lcal variable, 可以翻译成局部变量, 也可以翻译成本地变量。考虑到还有lcal data、lcal buffer等词, 我们选择统一将lcal翻译成“局部的“。chunk这个词是一片或者一块的意思,常常用来表示一块连续的内存区域。它在第6章、第7章和第9章中出现较多, 为了使之区别于blck(块) , 我们选择将其翻译成“片”。软考官方指定教材及同步辅导书下载|软考历年真是解析与答案软考视频|考试机构|考试时间安排Java一览无余:Java视频教程|Java SE|Java EE.Net技术精品资料下载汇总:ASP.NET篇.Net技术精品资料下载汇总:C#语言篇.Net技术精品资料下载汇总:VB.NET篇撼世出击:C/C++编程语言学习资料尽收眼底电子书+视频教程Visual C++(VC/MFC) 学习电子书及开发工具下载Perl/CGI脚本语言编程学习资源下载地址大全Pythn语言编程学习资料(电子书+视频教程) 下载汇总最新最全Ruby、RubynRails精品电子书等学习资料下载数据库精品学习资源汇总:MySQL篇|SQLServer篇|racle篇最强HTML/xHTML、CSS精品学习资料下载汇总最新JavaScript、Ajax典藏级学习资料下载分类汇总网络最强PHP开发工具+电子书+视频教程等资料下载汇总UML学习电子资下载汇总软件设计与开发人员必备经典Linux CBT视频教程系列Linux快速学习视频教程一帖通天罗地网:精品Linux学习资料大收集(电子书+视频教程) Linux参考资源大系Linux系统管理员必备参考资料下载汇总Linux shell、内核及系统编程精品资料下载汇总UNIX操作系统精品学习资料 电子书+视频>分类总汇FreeBSD/penBSD/NetBSD精品学习资源索引含书籍+视频Slaris/penSlaris电子书、视频等精华资料下载索引本书主要由龚奕利和留理春负责翻译完成。此外,刘晓文、李晓玲、邱文卓和张育也参与了翻译和校对工作。在此,还要感谢王文杰,他经常和我们一起讨论翻译中遇到的问题。由于本书内容较多,翻译时间紧迫,尽管我们尽量做到认真仔细,但还是难以避免出现错误和不尽如人意的地方。在此欢迎广大读者批评指正,我们也会把勘误表及时在网上更新,便于大家阅读。
本书的主要读者是计算机科学家、计算机工程师,以及那些想通过学习计算机系统的内在运我们的目的是解释所有计算机系统的本质概念,并向你展示这些概念是如何实实在在地影响应用程序的正确性、性能和实用性的。其他的系统类书籍都是从构建者的角度来写的,讲述如何实现硬件或是系统软件,包括操作系统、编译器和网络接,而本书是从程序员的角度来写的,讲述应用程序员如何能够利用系统知识来编写出更好的程序。当然,学习一个计算机系统应该做些什么,是学习如何构建一个计算机系统的很好的出发点,所以,对于希望继续学习系统软硬件实现的人来说,本书也是一本很有价值的介绍性读物。如果你研究和领会了这本书里的概念,你将开始成为极少数的“牛人 ,这些“牛人”知道事情是如何运作的,也知道当事情出现故障时如何修复。我们的目标是以一种你会立刻发现很有用的方式来呈现这些基本概念。同时,你也要做好更深人探究的准备,研究像编译器、计算机体系结构、操作系统、嵌人式系统和网络互联这样的题目,读者所应具备的背景知识*只需要几分钟。几乎或完全不需要编程。本书中的机器代码表示是基于英特尔及其竞争者支持的两种相关联的格式,俗称“x86 .对于很多系统来说,IA32机器代码已经成为一种事实上的标准。x86-64是IA32的一种扩展,它允许程序操作更多的数据,引用更广范围的内存地址。由于x86-64系统可以运行IA32的代码,因而在可预见的未来,这两种格式的机器代码都会得到广泛的应用。我们考虑的是这些机器如何在Unix或类Unix(比如Linux) 操作系统上运行C语言程序。(为了简化表述, 我们用术语Unix来统称所有继承自Unix的系统, 包括Slaris、MacS和Linux在内。) 文中包含大量已在Linux系统上编译和运行过的程序范例。我们假设你能访问一台这样的机器, 并且能够登录, 能够做一些诸如切换目录之类的简单操作,如果你的计算机运行的是Micrsft Windws系统, 你有两种选择:一种是获取一个Linux的拷贝(参见www.ubuntu.cm) , 然后安装Linux作为“双重启动”的一个选项, 这样你的机器就能运行其中任意一个操作系统了:另一种是通过安装Cygwin工具(www.cygwin.cm) , 你就能在Windws下得到一个类似Unix的外壳(shell) 以及一个非常类似于Linux所提供的环境, 不过, Cygwin并不能提供所有的Linux功能,我们还假设你对C和C++有一定的了解。如果你以前只有Java经验, 那么你需要付出更多的努力来完成这种转换, 不过我们也会帮助你, Java和C有相似的语法和控制语句。不过, 有一些C语言的内容, 特别是指针、显式的动态内存分配和格式化I/, Java中都是没有的。所幸的是, C是一个较小的语言, 在Brian Kernighan和Dennis Ritchie经典的“K&R”文献中得到了清晰优美的描述[58]。无论你的编程背景如何,都应该考虑将K&R作为你个人系统书籍收藏的一部分,这本书的前几章揭示了C语言程序和它们相对应的机器语言程序之间的交互作用,机器语言示例都是用运行在I A 32和x 86-64处理器上的GNU GCC编译器生成的。我们不需要你以前有任何硬件、机器语言或是汇编语言编程的经验。C语言初学者:关于C编程语言的建议为了帮助C语言编程背景薄弱(或全无背景)的读者,我们在书中加入了这样一些专门的注释来突出C中一些特别重要的特性。我们假设你熟忍C艹+或Java。如何阅读此书从程序员的角度来学习计算机系统是如何工作的会非常有趣,主要是因为你可以主动地来做这件事情。无论何时你学到一些新的东西,都可以马上试验并且直接看到运行结果。事实上,我们相信学习系统的唯一方法就是做(d)系统,即在真正的系统上解决具体的问题,或是编写和运行程序。这个主题观念贯穿全书。当引人一个新概念时,将会有一个或多个练习题紧随其后,你应该马上做一做来检验你的理解。这些练习题的解答在每章的末尾,当你阅读时,尝试自己来解答每个问题,然后再查阅答案,看看自己的答案是否正确。每一章后面都有一组难度不同的家庭作业题,对每个家庭作业题,我们标注了难度级别:**可能需要将近20分钟。通常包括编写和测试一些代码,许多都源自我们在考试中出的题目,警需要很大的努力,也许是1~2个小时。一般包括编写和测试大量的代码。:一个实验作业,需要将近10个小时。书中每段代码示例都是经过GCC编译并在Linux系统上测试后直接生成的, 没有任何人为的改动。当然, 你的系统上GCC的版本可能不同, 或者根本就是另外一种编译器, 那么可能生成不一样的机器代码,但是整体行为表现应该是一样的。所有的源程序代码都可以从CS:APP的主页(cs app.cs.cmu.edu) 上获取。在本书中, 源程序的文件名列在两条水平线的右边, 水平线之间是格式化的代码。比如, 图1中的程序能在cde/intr/目录下的hell.c文件中找到。当遇到这些示例程序时,我们鼓励你在自己的系统上试试运行它们.为了避免使本书体积过大, 内容过多, 我们创建了许多网络旁注(Web as idc) , 包括一些对本书主要内容的补充资料。本书中用CHAP:TP这样形式的标记来引用这些旁注, 这里CHAP是该章主题的一个缩写编码, 而TP是涉及的话题的缩写代码。例如, 网络旁注DATA:BL包含有对第2章中数据表示里面有关布尔代数的内容的补充资料:面网络旁注ARCH:VLG包含的是用Verilg硬件描述语言来做处理器设计的资料, 是对第4章中处理器设计部分的补充。所有的网络旁注都可以从CS:APP的主页上获取。
本书由12章组成,旨在阐述计算机系统的核心概念。
·第1章; 计算机系统漫游。这一章通过研究“hello, world”这个简单程序的生命周期, 介
绍计算机系统的主要概念和主题。
·第2章:信息的表示和处理。我们讲述了计算机的算术运算,重点描述了会对程序员有影
响的无符号数和数的二进制补码(two's complement) 表示的特性。我们考虑数字是如何
表示的,以及由此确定对于一个给定的字长,其可能编码值的范围。我们讨论该如何表示
数字,以及因此用给定的字长能编码的数值的范围。我们探讨有符号和无符号数字之间类
型转换的效果,还阐述算术运算的数学特性,菜鸟级程序员经常很惊奇地了解到(用二进
制补码表示的)两个正数的和或者积可能为负。另一方面,二进制补码的算术运算满足代
数环的特性,因此,编译器可以很安全地把一个常量乘法转化为一系列的移位和加法。我
们用C语言的位级操作来说明布尔代数的原理和应用。我们从两个方面讲述了IEEE标准
的浮点格式:一是如何用它来表示数值,一是浮点运算的数学属性。
对计算机的算术运算有深刻的理解是写出可靠程序的关键。比如,程序员和编译器不能用
表达式(x-y 0)来替代(x y),因为前者可能会产生出。甚至于也不能用表达式(-y -x)
来替代,因为在二进制补码表示中负数和正数的范围是不对称的。算术溢出是造成程序错误和安
全调洞的一个常见根源,然而很少有书从一个程序员的角度来讲述计算机算术运算的特性
·第3章;程序的机器级表示。我们教读者如何阅读由C编译器生成的IA32和x86-64汇编
性有所了解,我们想让读者了解为什么不同的并发进程各自都有一个完全相同的地址范
围,能共享某些页,而又独占另外一些页。我们还覆盖讲了一些管理和操纵虚拟存储器的
问题。特别地, 我们讨论了存储分配操作, 就像Unix的malloc和free操作。阐述这
些内容是出于下面几个目的。它加强了这样一个概念,那就是虚拟存储器空间只是一个字
节数组,程序可以把它划分成不同的存储单元。它帮助读者理解包含像存储泄漏和非法指
语言。我们说明为不同控制结构,比如条件、循环和开关语句,生成的基本指令模式。我
们还讲述过程的执行,包括栈分配、寄存器使用惯例和参数传递。我们讨论不同数据结构
(如结构、联合(union) 和数组) 的分配和访问方式。我们还以分析程序在机器级的样子
作为途径,来理解常见的代码安全漏洞,例如,缓冲区澄出,以及理解程序员、编译器和
操作系统可以采取的减轻这些威胁的措施。学习本章的概念能够帮助读者成为更好的程序
员,因为你们懂得程序在机器上是如何表示的。另外一个好处就在于读者会对指针有非常
全面面具体的理解.
·第4章:处理器体系结构。这一章讲述基本的组合和时序逻辑元素,并展示这些元素如
何在数据通路(datapath) 中组合到一起来执行I A 32指令集的一个称为“Y 86”的简化子
集。我们从设计单时钟周期、非流水线化的数据通路开始,这个设计概念上非常简单,但
是运行速度不会太快, 然后我们引人流水线化(pip clining) 的思想, 将处理一条指令所需
要的不同步骤实现为独立的阶段。这个设计中,在任何时刻,每个阶段都可以处理不同的
指令,我们的五阶段处理器流水线更加实用,本章中处理器设计的控制逻辑是用一种称为
HCL的简单硬件描述语言来描述的。用HCL写的硬件设计能够编译和链接到本书提供的
模拟器中, 还可以根据这些设计生成Verilog描述, 它适合合成(synthesis) 到实际可以运
行的硬件上去。
·第5章:优化程序性能。在这一章里,我们介绍了许多提高代码性能的技术,主要思想就
是让程序员通过使编译器能够生成更有效的机器代码来学习编写C代码。我们一开始介绍
的是减少程序需要做的工作的变换,这些是在任何机器上写任何程序时都应该遵循的。然
后讲的是增加生成的机器代码中指令级并行度的变换,因而提高了程序在现代“超标量”
(superscalar) 处理器上的性能。为了解释这些变换行之有效的原理, 我们介绍了一个简单
的操作模型, 它描述了现代乱序(out-of-order) 处理器是如何工作的, 然后给出了如何根
据一个程序的图形化表示中的关键路径来测量一个程序可能的性能。你会惊讶于对C代码
做一些简单的变换能给程序带来多大的速度提升。
·第6章:存储器层次结构,对应用程序员来说,存储器系统是计算机系统中最直接可见的
部分之一,到目前为止,读者一直认同这样一个存储器系统概念模型,认为它是一个有
一致访问时间的线性数组,实际上,存储器系统是一个由不同容量、造价和访问时间的
存储设备组成的层次结构。我们讲述不同类型的随机存取存储器(RAM) 和只读存储器
(ROM) , 以及磁盘和固态硬盘(译者注:直译应为固态驱动器, 但固态硬盘一词已经被大
家接受,所以延用)的几何形状和组织构造。我们描述这些存储设备是如何放置在层次结
构中的,讲述访问局部性是如何使这种层次结构成为可能的。我们通过一个独特的观点使
这些理论具体化、形象化,那就是将存储器系统视为一个“存储器山”,山脊是时间局部
性,而斜坡是空间局部性。最后,我们向读者阐述如何通过改善程序的时间局部性和空间
局部性来提高应用程序的性能。
·第7章:链接。本章讲述静态和动态链接, 包括的概念有可重定位的(relocatable) 和可执
行的目标文件、符号解析、重定位(rc location) 、静态库、共享目标库, 以及与位置无关
的代码。大多数讲述系统的书中都不讲链接,我们要讲述它是出于以下原因。第一,程序
员遇到的最令人迷惑的问题中,有一些是和链接时的小故障有关的,尤其是对那些大型软
件包来说。第二,链接器生成的目标文件是与一些像加载、虚拟存储器和存储器映射这样
的概念相关的。
·第8章;异常控制流。在本书的这个部分,我们通过介绍异常控制流(比如,除了正常分支
和过程调用以外的控制流的变化)的一般概念,打破单一程序的模型。我们给出存在于系统
所有层次的异常控制流的例子,从底层的硬件异常和中断,到并发进程的上下文切换,到由
于Unix信号传送引起的控制流突变, 到C语言中破坏栈原则的非本地跳转(nonlocal jump) 。
在这一章,我们介绍进程的基本概念,进程是对一个正在执行的程序的一种抽象,读者会学
习到进程是如何工作的,以及如何在应用程序中创建和操纵进程。我们会展示应用程序员如何通
过Unix系统调用来使用多个进程。学完本章之后, 读者就能够编写带作业控制的Unix外壳了。
同时,这里也会向读者初步展示程序的并发执行会引起不确定的行为和后果。
·第9章:虚拟存储器,我们讲述虚拟存储器系统是希望读者对它是如何工作的以及它的特
针引用这样的存储器引用错误的程序的后果,最后,许多应用程序员编写自己的优化了的
存储分配操作来满足应用程序的需要和特性。这一章比其他任何一章都更能展现将计算机
系统中的硬件和软件结合起来阐述的优点。而传统的计算机体系结构和操作系统书籍都只
讲述虚拟存储器的某一方面。
·第10章:系统级IO。我们讲述Unix IO的基本概念, 例如文件和描述符。我们描述如何
共享文件,IO重定向是如何工作的,还有如何访问文件的元数据。我们还开发了一个健
壮的带缓冲区的IO包, 可以正确处理一种称为short counts的奇特行为, 也就是库函数
只读取一部分的输人数据。我们阐述C的标准IO库, 以及它与Unix IO的关系, 重点谈
到标准IO的局限性,这些局限性使之不适合网络编程。总的说来,本章的论题是后面两
章—网络和并发编程的基础。
·第11章;网络编程,对编程而言,网络是非常有趣的IO设备,将许多我们前面文中学习
的概念, 比如进程、信号、字节顺序(byteorder) 、存储器映射和动态存储器分配, 联系
在一起。网络程序还为下一章的主题——并发,提供了一个很令人信服的上下文。本章只
是网络编程的一个很小的部分, 使读者能够编写一个Web服务器, 我们还讲述了位于所有
网络程序底层的客户端-服务器模型。我们展现了一个程序员对Inte met的观点, 并且教
读者如何用套接字(socket) 接来编写Internet客户端和服务器。最后, 我们介绍超文本
传输协议HTTP, 并开发了一个简单的迭代式(iterative) Web服务器,
·第12章:并发编程。这一章以Inte met服务器设计为例介绍了并发编程。我们比较对照了
三种编写并发程序的基本机制(进程、IO多路复用技术和线程),并且展示如何用它们来
建造并发Internet服务器。我们探讨了用P、V信号操作来实现同步、线程安全和可重人
(reentrancy) 、竞争条件以及死锁等的基本原则。对大多数服务器应用来说, 写并发代码都
是很关键的。我们还讲述了线程级编程的使用方法,来解释应用程序中的并行性,使得程
序在多核的处理器上能执行得更快。使所有的核来解决同一个计算问题需要很小心谨慎地
协调并发的线程,既要保证正确性,又要争取获得高性能。
出版者的话
译者序
前言
第1章计算机系统漫游.1
Computer Systems; A Programmer'a Per po ctive, 2E
2.数据大小.25
2.1.4寻址和字节顺序26
2.1.5表示字符串.31
2.1.6表示代码31
2.1.7布尔代数简介.32
12.1.8C语言中的位级运算.34
1.1信息就是位+上下文
1.2程序被其他程序翻译成不同的
1.3了解编译系统如何工作是大有
1.4处理器读井解释存储在存储器
1.4.1系统的硬件细成.5
2.1.9C语言中的逻辑运算36
2.1.10C语言中的移位运算.36
2.2整数表示38
益处的
中的指令
1.7.1进程
1.7.4文件.
1.9.1并发和并行
1.9.2计算机系统中抽象的
3.2.1机器级代码.106
3.2.2代码示例.107
3.2.3关于格式的注解.109
3.4.1操作数指示符112
3.4.2数据传送指令·****114
3.4.3数据传送示例116
3.5.1加载有效地址118
3.5.2一元操作和二元操作119
3.5.3移位操作.120
3.5.4讨论120
3.5.5特殊的算术操作122
3.6.1条件码
3.6.3跳转指令及其编码.127
·3.6.4翻译条件分支
3.6.5循环.132
3.6.6条件传送指令139
3.6.7 switch语句144
3.7.1栈帧结构149
3.7.2转移控制.150
3.7.3
寄存器使用例151
3.7.4过程示例·
3.7:5递归过程.156
3.8.1基本原则.158
3.8.2指针运算
2.2.1整型数据类型
2.2.2无符号数的编码
2.2.3补码编码
2.2.4有符号数和无符号数之间的
2.2.5C语言中的有符号数与
2.2.6扩展一个数字的位表示49
2.2.7截断数字.51
2.2.8关于有符号数与无杆号数的
2.3整数运算
2.3.7除以2的冢.64.
1.4.2运行hello程序.
1.5高速缓存至关重要7
1.6存储设备形成层次结构9
1.7操作系统管理硬件10
1.7.2线程.12
1.7.3虚拟存储器.12
1.8系统之间利用网络通信.13
1.9重要主题15
1.10小结.17
参考文献说明.18
第一部分程序结构和执行
第2章.20
2.3.2补码加法
2.3.3补码的非
2.3.4无符号乘