为什么学汇编.doc_第1页
为什么学汇编.doc_第2页
为什么学汇编.doc_第3页
全文预览已结束

下载本文档

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

文档简介

接下来的问题是:为什么需要使用寄存器呢?难道不可以直接在内存中进行操作吗?原因很简单,速度不同。通过处理器中的这种功能设计,降低了晶体管的需求数量,从而简化了处理器。这正是精简指令集处理器的一个关键因素。为什么学习汇编语言?严格意义上讲,汇编语言是随着处理器的出现而出现的。它是处理器可以使用的最低级的指令集,每一款处理器都有属于它自己的汇编指令集。早些时候,人们不得不利用汇编语言编写计算机程序。现在,有超过100种编程语言可供我们选择,当然每一种都有它们各自的优缺点。如今绝大部分低层次的开发都是通过C语言完成的,以便这些开发可以方便的在不同的处理器之间移植。C语言比汇编语言的可读性更强,并且优点很多。另一个原因是可移植性。如前所述,针对某一型号处理器编写的汇编程序不会对其它型号的处理器起作用。不是所有的处理器都拥有相同的指令集,或者相同的数据处理方式。C编译器的工作就是将C语言文件转换为适合当前处理器的机器代码。当我们已经知道将要使用的处理器型号时,C编译器的这种功能看起来并不重要,但是C编译器了解当前处理器的特征并能够有针对性地生成优化程序。同时,一个外部库被设计出来,以便用于处理相当广泛的一类处理器,而不仅仅是针对某一款特定型号。因此为什么非要学习汇编语言呢?尽管诸如C等编程语言提供了巨大的便捷,但是却往往所见非所得。因为不论你选择什么语言C,Python,Java,等等实际上处理器最终使用的唯一语言仍然是汇编语言。尽管大部分程序员可能不会关注汇编语言,但是嵌入式软件工程师迟早会遇到汇编代码。嵌入式系统具有两个可能在大型计算机系统中并不太重要的限制因素:速度和空间。嵌入式系统经常要求速度尽可能的快,并且一般要对存储空间的使用做出严格限制。速度空客A320飞机升降舵和副翼的控制依靠68000处理器来完成。这款处理器是1979年生产的,尽管看起来它已经很“老”了,但是它也是可靠性最高的处理器之一。正因如此,这款处理器才被用在关键任务系统上,当然也要做出一点牺牲。在可供选择的处理器中,它并不是速度最快的,因此所有的指令都要仔细编写并进行优化以确保这款芯片能够尽可能快的运行。这带来了一个问题,一个有时会让新人们吃惊的问题。难道编译器不能总是生成可能的最优代码吗?答案是不能。通常情况下,编译器可以很好的完成工作,但偶尔它们也会让你吃惊,或者它们无法准确地理解你想做什么。它们永远也不会比你更聪明。想想一个购物清单。你有朋友来访,你想为他们做点东西吃,比如说巴斯克式烤鸡。因此,你开始列清单。你需要1磅西红柿,1只鸡(或者6个鸡脯),4根辣椒,3个洋葱,一些白酒,一些百里香,一些印度香米,然后你带上处方清单出发了。清单上包含了你所需的每一样东西(尽管你可能需要稍微再增加一点其它的配料)。对于如何做有几个选择。你可以按照清单上的顺序备齐配料,首先是西红柿,接下来买鸡,然后回到买西红柿的地方买辣椒。取决于超市的大小,你可能要浪费很多的时间。如果提前规划,你至少可以将临近的材料一起购买。因此,这次先买西红柿,接下来是辣椒和洋葱,因为它们都在同一个地方。你不必再返回去购买那些曾经触手可及的材料了,你做了优化!结果都是一样的,但是优化后速度更快。不过,能否再做点什么呢?是的,可以,你可以做的再深入一点。附近的超市有两个出入口。铭记这一点,先买西红柿是因为它们距离南边的出入口很近。几步之外,你可以买到辣椒。从那开始,再去买鸡。直走,两个过道之后可以买到白酒。接下来在向北面出入口行进过程中,依次购买清单上的各种材料。制作这样一份清单可能比较耗费时间,但是这是一份优化后的清单,可能会使你花费的总时间最短。花在购物清单上的时间有多少呢?优化路径后节省的时间又是多少呢?不错,这要视情况而定。如果花了1个小时的时间制定购物清单,而在超市购物只节省了8分钟,那就没有必要。如果能够节省5分钟,那就可以花费2分钟的时间来对原材料进行分类。如果你有很多朋友,并且每个周末你都会邀请他们,那结果又会如何呢?假设你的朋友并不介意只吃巴斯克式烤鸡,理论上讲你一次可以节省8分钟。按一年50次算,一个2小时购物清单将会为你省去总计6个小时呆在超市的时间。尽管这个例子有点滑稽,它却说明了问题的关键。在一个嵌入式系统中,部分程序即使不会运行几百万遍也可能达到数千遍。各处几毫秒时间的节约最终会节省整个系统大量的时间。这也意味着采用廉价的芯片即可,因为经过优化以后主频20MHZ的芯片已经完全可以胜任当前工作,这样就没有必要再使用价格昂贵的40MHZ芯片了。C或C+代码可以编译成机器语言,尽管通常编译器可以很好的完成工作,但是在一些情况下你不得不使用汇编语言编写严格的例行优化程序,或者纠正编译器的输出结果。同样的,一些例行启动程序不能使用C语言编写,为了保持内存管理器和缓存系统的活力,必须使用汇编语言编写代码。作为1944年制造的Harvard Mark I型电子机械计算机的众多程序师之一,葛丽丝霍普专注于代码的良好设计工作,并且经常围绕这个主题做公开宣讲。她因为对1毫秒和1纳秒的精辟论述而出名:分别将光在这两个不同时间段内传播的最大距离等价为同长度的电线。对以1纳秒,等价电线的长度是11.8英寸(29.97cm)。相比之下,光在1毫秒时间内传播的最大距离的等价电线长度为984英尺(仅稍短于300m)。产生的电线如此之长,她接下来会说:“1毫秒,984英尺。我有

温馨提示

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

最新文档

评论

0/150

提交评论