分享

[翻译]汇编器和加载器简史-CSDN博客

 山峰云绕 2023-10-18 发布于贵州

https://blog.csdn.net/weixin_30550271/article/details/97018217

来源:编辑器和加载器

翻译渣啊,先来无事做。

第一个存储程序计算机之一是 EDSAC(电子延迟存储自动转换器),由 Maurice Wilkes 和 W. Renwick 于 1949 年在剑桥大学开发[4,8 & 97]。从成立之初起,EDSAC 就拥有了一个名为“最终命令”的组成机。它是在由一组旋转选择电话器组成的串行存储器中实现的,并且它接受符号指令。每条指令都由一个字母助记符、一个十个地址和第三个字母字段组成。第三个字段由默认的 12 个常量之一组成。

程序员要在现场添加到该地址。

历史上第一台程序存储的计算机是剑桥大学的Maurice WilkesW.Renwick1949年制造的EDSAC(电子延迟存储自动转换器)  ,自从创建EDSAC的第一天开始,EDSAC就命名了一个初始命令的编译器,它由一组旋转的电话选择器组成的计数器实现,编译器接受符号指令,每一个指令包含一个单个字母的助记符,一个十轮地址,第三个域也是一个字母,第三个由会计师在部署时将预先设置的十二个常量之一添加到地址上。

有趣的是,威尔克斯也是第一个提出使用标签(他称为浮动地址)的人,第一个使用早期形式的宏(他称为合成命令)的人,以及第一个开发子程序库的人[4]。

非常有趣的是,威尔克斯也是第一个简单使用标号(他叫浮点地址)的人,第一个使用早期格式的宏(他叫)的人,而且也是第一个开发子例程库的人。

参考文献 [65] 是对在汇编器中使用标签的非常早期的描述。IBM 650 计算机于 1953 年左右首次交付,其汇编器与当今的汇编器非常相似。SOAP(符号优化器和汇编程序)以传统方式进行符号汇编,并且可能是第一个这样做的汇编程序。然而,它的主要特点是优化计算下一条指令的地址。IBM 650(顺便说一句,是十进制计算机)基于 磁鼓存储器,程序存储在该存储器中。每条指令都必须从鼓中取出,并且必须包含其后继的地址。为了获得最大速度,指令必须在前一个指令完成后立即放置在鼓上读头下方的位置。SOAP 根据各个指令的执行时间计算这些地址。第 7 章提供了有关此过程的更多详细信息和一个编程项目。

参考书目[65]是一个使用标号的编译器的早期描述,这个编译器运行于1953年首次发布的IBM 650计算机上,并且十分像今天的编译器。SOAP 符号优化器和汇编程序)现在进行常见的符号编译器,可能也是第一个支持此类功能的编译器。然后这个编译器编译器的功能是计算下一条指令的地址有极大的优化。IBM 650(顺带说明,是十个神经计算机的程序存储在磁鼓存储器中。每一条指令从磁鼓中取出,并且包含下一条指令的地址。为了达到最快的速度,每条指令要前面一条指令完成的同时放入磁鼓的读磁头的下面。SOAP在每条指令运行时刻计算下一条指令的地址。第七章有更多的细节描述,并且有一个Smashing项目。

IBM 704 是第一批获得商业成功的计算机之一。它具有浮点硬件和索引寄存器等功能。它于 1956 年首次交付,同年由联合飞机公司的罗伊·纳特 (Roy Nutt) 编写了它的第一个装配程序 UASAP-1(因此命名为 UASAP——联合飞机符号装配程序)。它是一个简单的二进制汇编程序,除了一对一的翻译之外几乎什么也不做,并且让程序员完全控制程序。IBM 用户组织 SHARE 采用了该汇编程序的最新版本 [9] 并将其与成员制作和贡献的例程一起分发给其成员。UASAP 为早期的汇编程序编写者指明了道路,其许多设计原则至今仍被汇编程序所沿用。UASAP 后来被修改为支持宏[62]。同年,R. Gold Finger [10] 开发了另一个汇编程序 IBM Auto coder,用于 IBM 702/705 计算机。这个汇编器(实际上是几个不同的自动编码器汇编器)显然是第一个使用宏的。Autocoder 汇编器被广泛使用,并最终开发成具有许多安装使用的大型宏库的大型系统。另一个开创性的早期汇编器是 UNISAP,[47],用于 UNIVAC I 和 II 计算机,由 M. E. Conway 于 1958 年开发。它是一个半遍汇编器,并且是第一个使用本地标签的汇编器。第 1 章介绍了这两个概念。Autocoder 汇编器被广泛使用,并最终开发成具有许多安装使用的大型宏库的大型系统。另一个开创性的早期汇编器是 UNISAP,[47],用于 UNIVAC I 和 II 计算机,由 M. E. Conway 于 1958 年开发。它是一个半遍汇编器,并且是第一个使用本地标签的汇编器。第 1 章介绍了这两个概念。Autocoder 汇编器被广泛使用,并最终开发成具有许多安装使用的大型宏库的大型系统。另一个开创性的早期汇编器是 UNISAP,[47],用于 UNIVAC I 和 II 计算机,由 M. E. Conway 于 1958 年开发。它是一个半遍汇编器,并且是第一个使用本地标签的汇编器。第 1 章介绍了这两个概念。

第一个商业上取得成功的计算机型号是IBM 704 ,它有一些特性比如浮点硬件损坏和变址寄存器,它于1956年发布,它的第一个安装器UASAP-1 ,由联合飞机公司Roy Nutt编写的那个也于同年发布(所以名字UASAP是指United Aircraft Symbolic Assembly Program)。它是一个简单的二进制汇编器,除了一个独立的翻译之外并不做特别的事情,而且不需要IBM用户组织SHARE ,采用了一个较迟的版本,并且集中了一些示例程序库给它的成员和一些贡献者。UASAP早期的编译器的编写者指出了关键的几项点,许多设计原则到今天仍在使用,UASAP后来被修改为支持宏。同年,另一个设备,由R.Gold 编写的IBM自动编码器在IBM 702/705机箱上使用。编译器(实际上由几个不同的自动编码的编译器组成)似乎是第一个使用宏的编译器。自动编码器带有一个巨大的宏库,在许多开发大型系统的中被广泛的运用设备拍卖。

到五十年代末,IBM 发布了 7000 系列计算机。它们带有宏汇编器 SCAT,它具有现代汇编器的所有功能。它有许多指令(IBM 术语中的伪指令)、广泛的宏工具,并且生成可重定位的目标文件。SCAT 汇编器(符号编码器和翻译器)最初是为 IBM 709 [56] 编写的,并经过修改以在 IBM 7090 上工作。GAS(通用汇编系统)汇编器是另一个强大的 7090 汇编器 [58]。宏的想法起源于几个人。McIlroy [22] 可能是第一个提出现代形式的宏和条件汇编思想的人。他在上面提到的 GAS 汇编器中实现了这些想法。参考文献[60]是一篇简短的早期论文,介绍了宏定义表处理的一些细节。

One of the first full-feature loaders, the linking loader for the IBM 704–709–7090 computers [59], is an example of an early loader supporting both relocation and linking.

50年代末期,IBM发布了7000系列的计算机。这些计算机统一使用一个叫SCAT的宏汇编器,SCAT有所有现代汇编器的特性。它支持很多伪指令directives (IBM的术语称之为伪指令pseudo instructions),广泛运用的宏,并且产生可重定位的目标文件。SCATSymbolic Coder And Translator)汇编器最初是写给709使用,后来经过修改使用在7090上。有几个人同时想到面向宏的汇编器,McIlroy恐怕是第一个建议使用现代的宏格式和条件汇编的人。他在GAS里实现了他所有的想法。参考书目【60】是一个短的早起论文,展现了宏定义处理的一些细节。

The earliest work discussing meta-assemblers seems to be Ferguson [24]. The idea of high-level assemblers originated with Wirth [61] and had been extended, a few years later, by an anonymous software designer at NCR, who proposed the main ideas of the NEAT/3 language [85,86]. The diagram summarizes the main phases in the historical development of assemblers and loaders. 

看起来Ferguson开展了元汇编器的早期工作。Wirth提出了面向高层级并且带有扩展的汇编器的想法。许多年后,一位NCR的匿名软件设计者提出了关于NEAT/3语言主要思想。下图展示了汇编器和加载器主要的历史发展阶段。

 

 

I would like to present a brief historical background as a preface to the language specification contained in this manual.

— John Warnock Postscript Language Reference Manual, 1985.

我想介绍一下这个语言规范的简短历史背景作为这个手册的前言。

-John Warnock PostScript语言参考手册,1985

65. IBM 7090 数据处理系统,参考手册,IBM 表格编号 A22-6528。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多