资讯处理语言

资讯处理语言,该代码包括一些功能,旨在帮助程序执行简单的问题解决动作,如列表、动态内存分配、数据类型、递归、函数作为参数、生成器和合作多任务。IPL发明了列表处理的概念,尽管是以汇编语言的方式。

IPL的基础知识 一台IPL计算机有。

一组符号。所有的符号都是地址,以及命名单元。与后来的语言中的符号不同,符号由一个字符和一个数字组成,写成H1、A29、9-7、9-100。 以字母开头的单元名是区域性的,是xxx地址。 以9-开头的单元名是局部的,在单个列表的范围内有意义。一个list/s的9-1与另一个list/s的9-1无关。 其他符号(如纯数字)是内部的。 一组单元。列表是由几个单元组成的,包括相互引用。单元有几个字段:P,一个3位字段,当单元被用作指令时用于操作代码,当单元为数据时未使用;Q,一个3值字段,当单元被用作指令时用于间接引用,当单元为数据时未使用;SYMB,一个符号,用作单元中的值。 一组原始过程,在现代语言中被称为原始函数。 IPL的数据结构是列表,但列表的结构比许多语言更复杂。一个列表由一个单链的符号序列组成,正如人们所期望的那样–加上一些描述列表,它是附属的单链列表,被解释为交替的属性名称和值。IPL提供了按名称访问和改变属性值的原语。描述列表被赋予本地名称(形式为9-1)。因此,一个名为L1的包含符号S4和S5的列表,并通过将值V1与属性A1和V2与A2关联来描述,将被存储如下。0表示一个列表的结束;单元格名称100、101等是自动生成的内部符号,其值是不相关的。这些单元格可以分散在整个内存中;只有L1,它使用了一个必须全局知道的区域名称,需要驻留在一个特定的地方。

IPL是一种用于操作列表的汇编语言。它有几个单元被用作特殊用途的寄存器。例如,H1是程序计数器。H1的SYMB字段是当前指令的名称。然而,H1被解释为一个列表;用现代术语来说,H1的LINK是一个指向调用堆栈开始的指针。例如,子程序调用将H1的SYMB推到这个堆栈中。

H2是自由列表。需要分配内存的程序从H2中抓取单元;用完内存的程序则将其放在H2中。在进入一个函数时,参数列表在H0中给出;在退出时,结果应该在H0中返回。许多程序返回一个表示成功或失败的布尔结果,这被放在H5中。10个单元格,W0-W9,被保留为公共工作存储器。程序在道德上被约束(引用CACM的文章),以保存和恢复这些单元的值。

有八条指令,基于P的值:子程序调用,推/弹S到H0;推/弹S中的符号到附在S上的列表;复制值到S;条件分支。在这些指令中,S是目标。如果Q=0,S就是SYMB字段的值;如果Q=1,就是SYMB命名的单元格中的符号;如果Q=2,就是SYMB命名的单元格中的符号。除了条件性分支,在所有情况下,单元格的LINK字段会告诉你下一条指令要执行。

IPL有一个大约150个基本操作的库。其中包括以下操作。

资讯处理语言

测试符号是否相等

查找、设置或擦除一个列表的属性 在一个列表中找到下一个符号;在一个列表中插入一个符号;擦除或复制整个列表 算术运算(在符号名称上) 符号的操作;例如,测试一个符号是否表示一个整数,或使一个符号成为局部 I/O操作 生成器,对应于函数式编程中的迭代器和过滤器。例如,一个生成器可以接受一个数字列表,并产生它们的平方的列表。生成器可以接受适当设计的函数–严格地说,是适当设计的函数的代码地址–作为参数。

0

点评

点赞

相关文章