【问题标题】:In BCPL what does "of" do?在 BCPL 中,“of”是做什么的?
【发布时间】:2020-05-21 23:57:56
【问题描述】:

我试图从用 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”构造做什么?

【问题讨论】:

    标签: bcpl


    【解决方案1】:

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

    自从我上次使用它以来添加的一些东西是子字段运算符SLCTOF。根据manual on Martin's own site

    K OF E 形式的表达式访问内存中连续位的字段。 K 必须是等于 SLCT length:shift:offset 的清单常量,E 必须产生一个指针,p 说。

    该字段完全包含在位置p + offset 的单词中。它的位长为length,距离字的右端为shift 位。长度为零被解释为与shift 和实现的字长一致的可能的最长长度。

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


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


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

    【讨论】:

    • 我正在使用埃塞克斯大学 BCPL,并且已经设法获得了一本手册,其中包含我现在理解的这个分词功能。当我在具有 36 位字的 PDP10 上使用它时,我特别困惑,所以我花了一些时间来理解字和位拆分。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 2014-01-13
    • 2015-05-08
    • 2011-12-27
    • 2010-10-01
    • 2017-09-12
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多