代码背后.PDFVIP

  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文档。上传文档
查看更多
代码背后

第 1 章 代码背后 知其然,并知其所以然。 —— 《朱子语类》 1.1 从编程聊起 说起编程,如果有人问我们敲进计算机的第一段代码是什么,相信很多人会说出同一个 答案——‚Hello World !‛。编程语言的教材一般都会把这段代码作为书中的第一个例子呈现 给读者。当我们按照课本或者老师的要求把它输入到开发环境,然后单击 ‚编译‛和 ‚运行‛ 按钮,映入眼帘的那行字符串定会令人欣喜不已!然而激动过后,一股强烈的好奇心可能会 驱使我们去弄清一个新的概念——编译是什么? 遗憾的是,一般教授编程语言的老师不会介绍太多关于它的内容,最多会告诉我们:代 码只有经过编译,才能在计算机中正确执行。随着知识和经验的不断积累,我们逐渐了解到 当初单击‚编译‛按钮的时候,计算机在幕后做了一系列的工作。它先对源代码进行编译, 生成二进制目标文件,然后对目标文件进行链接,最后生成一个可执行文件。即便如此,我 们对编译的流程也只有一个模糊的认识。 直到学习了编译原理,才发现编译器原来就是语言翻译程序,它把高级语言程序翻译成 低级汇编语言程序。而汇编语言程序是不能被计算机直接识别的,必须靠汇编器把它翻译为 计算机硬件可识别的机器语言程序。而根据之前对目标文件和链接器的了解,我们可能猜测 到机器语言应该是按照二进制的形式存储在目标文件内部的。可是目标文件到底包含什么, 2 自己动手构造编译系统:编译、汇编与链接 链接后的可执行文件里又有什么?问题貌似越来越多。 图 1-1 展示了编译的大致工作流程,相信拥有一定编程经验的人,对该图所表达的含义 并不陌生。为了让源代码能正常地运行在计算机上,计算机对代码进行了‚繁复‛的处理。 可是,编译器既然是语言翻译程序,为什么不把源代码直接翻译成机器语言,却还要经过汇 编和链接的过程呢? 源代码 汇编代码 二进制目标文件 可执行文件 编译器 汇编器 链接器 图1-1 编译的流程 似乎我们解决了一些疑惑后,总是会有更多的疑惑接踵而来。但也正是这些层出不穷的 疑惑,促使我们不断地探究简单问题背后的复杂机制。当挖掘出这些表象下覆盖的问题本质 时,可能比首次敲出‚Hello World !‛程序时还要喜悦。在后面的章节中,将会逐步探讨编译 背后的本质,将谜团一一揭开,最终读者自己可动手构造出本书所实现的编译系统——编译 器、汇编器与链接器,真正做到‚知其然,并知其所以然‛。 1.2 历史渊源 历史上很多新鲜事物的出现都不是偶然的,计算机学科的技术和知识如此,编译系统也 不例外,它的产生来源于编程工作的需求。编程本质上是人与计算机交流,人们使用计算机 解决问题,必须把问题转化为计算机所能理解的方式。当问题规模逐渐增大时,编程的劳动 量自然会变得繁重。编译系统的出现在一定程度上降低了编程的难度和复杂度。 在计算机刚刚诞生的年代,人们只能通过二进制机器指令指挥计算机工作,计算机程序 是依靠人工拨动计算机控制面板上的开关被输入到计算机内部的。后来人们想到使用穿孔卡 片来代替原始的开关输入,用卡片上穿孔的有无表示计算机世界的‚0‛和‚1‛,让计算机 自动读取穿孔卡片实现程序的录入,这里录入的指令就是常说的二进制代码。然而这种编程 工作在现在看起来简直就是一个‚噩梦‛,因为一旦穿孔卡片的制作出现错误,所有的工作 都要重新来过。 人们很快就发现了使用二进制代码控制计算机的不足,因为人工输入二进制指令的错误 率实在太高了。为了解决这个问题,人们用一系列简单明了的助记符代替计算机的二进制指 令,即我们熟知的汇编语言。可是计算机只能识别二进制指令,因此需要一个已有的程序自 动完成汇编语言到二进制指令的翻译工作,于是汇编器就产生了。程序员只需要写出汇编代 码,然后交给汇编器进行翻译,生成二进制代码。因此,汇编器将程序员从烦琐的二进制代 码中解脱出来。 使用汇编器提高了编程的效率,

文档评论(0)

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

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

1亿VIP精品文档

相关文档