第3章 指令:机器语言.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 指令:机器的语言 我对上帝说西班牙语, 对女人说意大利语, 对男人说法语, 对我的马说德语。 法王查理五世 3.1引言 2 3.2计算机硬件的操作 3 3.3计算机硬件的操作数 6 3.4指令的计算机内部表示 15 3.5决策指令 24 3.6 计算机硬件对过程的支持 38 3.7 数字以外 54 3.8 MIPS的其它寻址方式 59 3.9 启动程序 78 3.10 一个完整的例子 89 3.11 数组与指针 102 3.12 实际资料:PowerPC和80x86指令 109 3.13 谬误与陷阱 124 3.14 结论 126 3.15 历史背景和阅读资料 130 3.16重要术语 138 3.17 习题 139 计算机的五个基本组成部分 (图) 3.1引言 要命令计算机的硬件工作,就必须使用它的语言。机器语言的单词称为指令,单词表称为指令集。在这一章你将看到一个实际计算机的指令集,既有书写的方式也有机器可以识别的方式。从编程语言看起来受限制的符号表示开始,一步步地求精直到成为实际的机器语言。 你可能认为机器语言象人的语言一样种类繁多,但实际上机器语言之间十分相象。因此如果你学会了一种语言,其它的也就很容易懂了。这种相似性是由于所有的计算机都是建立在硬件技术之上的,而这些硬件技术又是基于相似的原理的;另外,还由于总有一些基本操作是所有计算机都提供的,而且计算机设计者的目标是相同的,即找一种语言,使得人们用它易于设计硬件且易于编写编译程序,同时可以使得机器的性能最好、价格最低。这个目标是要花很多时间的。下述引文虽然写于计算机刚出现的时候,但是它在今天仍然是适用的。 用形式逻辑的方法可以很容易看到存在某种〔指令集〕在理论上足以控制和执行任意顺序的操作……从当前的观点出发选择一个〔指令集〕时考虑得更多更实际的问题是:〔指令集〕要求的设备简单,在重要的实际问题中的应用明确和解决问题的速度。 Burks,Goldstine,and von Neumann,1947 “设备简单是/cod2e.htm,C与Pascal简短的对照。) 通过学习指令如何被表达,你也将发现计算的秘密:存储程序概念。并且将通过使用机器语言编程和在与本书一起提供的模拟器中运行它们来练习你的“外语”技巧。 本章结束时简要介绍指令集的历史演变和其他的机器语言。 这些指令集选自MIPS,用在NEC,Nintendo,Silicon Graphics和Sony的机器上,是自1980以来所设计的指令集中比较典型的。我们一次只研究MIPS指令集的一个方面,给出它的基本原理以及相应的机器结构。这种循序渐进的方法将使汇编语言变得不再枯燥。为了使读者对整体结构有所了解,在每章的末尾给出一个图,来总结到目前为止已经研究过的MIPS指令集的那些方面,并且强调在该章讲解过的部分。 3.2计算机硬件的操作 毫无疑问,必须有执行基本算术运算操作的指令。 Burks,Goldstine,and von Neumann,1947 任何计算机都必须能够执行算术操作指令。MIPS汇编语言的下述符号 add a,d,c 命令一台计算机将两个变量b和c相加,并把它们的和放在a中。 这种符号表示非常严格,每条MIPS算术运算指令仅仅执行一个操作,并且有且只有三个变量。例如,将变量b,c,d和e的值的总和存放在变量a中。(在这节我们故意不将“变量”的概念表示得很清晰;在下一节将给出一个更详细、更实际的说明。) 下面的指令序列将变量b,c,d,e相加: add a, b, c # 将b与c的和置于a中 add a, a, d # 现在a中是b、c、d的和 add a, a, e # 现在a中是b、c、d、e的和 这样,得到四个变量的和需要三条指令。 在上面代码的每一行中,符号“#”右边的字是帮助人们读懂程序而加入的注释,计算机不处理它们。注意,不同于其他程序语言,这种语言的每一行最多只有一条指令。另一个不同是,注释总是在一行的末尾结束。 象加法这样的运算,其操作数个数一般为三个:两个相加的数和一个存放和的地址。要求每条指令有且仅有三个操作数,符合硬件简单化的原则:操作数个数不固定指令所需的硬件比操作数个数固定指令所需的硬件要复杂得多。这种情况说明了硬件设计中四个基本原则的第一个原则: 设计原则1:简单性来自规则性。 我们将在下面的两个例题中给出高级语言程序和更原始的汇编语言程序的关系。图3.1总结了本节所讲述的部分MIPS汇编语言指令。 把C语言中的两条赋值语句编译成MIPS 例题:这段C程序包括五个变量,a、b、c、d 和e: a = b + c; d = a - e; 将C翻译为MIPS汇编指令是由编译器完成的。给出由C编译

文档评论(0)

sdfgrt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档