1

我试图从用 BCPL 编写的 DEC PDP10 中理解一些古老的代码。代码示例如下:

                test scanner()=S.DOTNAME then
            $(  word1:=checklook.up(scan.info,S.SFUNC,"unknown Special function [:s]")
                D7 of temp:=P1 of word1
                scanner()
            $) or D7 of temp:=SF.ACTION

在这种情况下,“D7 of temp”和“P1 of word1”结构做了什么?

4

1 回答 1

1

势不可挡的 Martin Richards继续为 BCPL 语言添加特性(a)尽管事实上很少有人知道它(b)。Stack Overflow 上只标记了七个左右的问题,bcpl但不要误会我的意思:我喜欢这种语言,并且在 80 年代使用它时留下了美好的回忆。

自从我上次使用它以来添加的一些东西是子字段运算符SLCTOF. 根据马丁自己网站上的手册

形式的表达式K OF E访问内存中连续位的字段。K必须是一个明显的常量,例如,SLCT length:shift:offset并且E必须产生一个指针p

该字段完全包含在单词 at positionp + offset中。它的位长度为length并且是shift从字的右手端开始的位。长度为零被解释为可能与shift实现的字长一致的最长长度。

因此,它是一种访问部分内存的更细粒度的方式,而不仅仅是!“取消引用整个单词”运算符,因为它允许您获取单词中的特定


(a)显然, 包括Raspberry PI 的一个版本,这最终可能会给我一个借口来打破我身边所有的闲置 PI,并教育孩子们了解“过去的美好时光”。


(b)它至少用于我工作的一个 MC6809 嵌入式系统,并且在很多个月前形成了 AmigaDOS 的重要组成部分。

于 2020-07-29T01:25:12.947 回答