奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 386 页

PDF 物理页索引 402 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
386
PDF 物理页
402(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
ebe92d4af3323834449cb9527810a8dd0d7e079092d236babb8335f49c2d8552

另一方面,有一种普遍现象:一个优秀的汇编程序员所编写的程序比编译器所产生的代码更加有效率。也就是说,从高级语言程序生成的可执行程序比相同功能的汇编语言程序更大,并且运行速度更慢(但从近年的发展来看,这种差别已变得不再明显,因为微处理器变得更加复杂,而且编译器在优化代码方面也更加成熟)。

此外,虽然高级语言提高了处理器的易用性,但并没有让其变得更强大。微处理器的任何一个功能都可以通过汇编语言实现,因此汇编语言可以高度利用处理器的功能。因为高级语言必须转化成机器码,所以它只会降低微处理器的能力。事实上,如果某种高级语言具有真正意义的可移植性,那么它将不能使用某些处理器的特有功能。

例如,许多微处理器都有移位指令。如前所述,这些指令能将累加器中的字节的每一位向左或向右移动。但事实上,几乎没有哪一种高级语言包含这种操作。如果在程序中需要进行移位操作,则必须通过乘2或除2来模拟该过程(这并不是什么坏事:事实上,许多现代编译器都是利用处理器的移位指令来实现乘以或除以2的幂的)。除此之外,许多高级语言也不包括按位逻辑运算。

在早期的家用计算机中,大部分应用程序都是用汇编语言写的,而现在除了一些特殊的应用场合之外,汇编语言已经很少使用了。而今处理器引入了一些新的硬件,可以实现流水线技术—同时有若干个指令码渐次执行—这使得汇编语言变得更加复杂且不易处理。与此同时,编译器却变得更加成熟,越来越多的程序开始使用高级语言来编写。现代计算机大容量的存储器也作为一个重要的角色,推动了这种趋势:程序员不再局限于编写运行在小内存和小磁盘上的程序。

早期的计算机设计者都曾尝试用数学符号来描述问题,但公认的第一个真正可以工作的编译器是 A-0,它是为 UNIVAC 开发的编译器,于 1952 年由雷明顿兰德公司(Remington-Rand)的格瑞斯·穆雷·霍珀(Grace Murray Hopper,1906-1992)开发完成。霍珀博士的早期计算机研究工作始于1944年,那时她效力于霍华德·艾肯(Howard

编码隐匿在计算机软硬件背后的语言

386