Ren*_*lle 5 constants numeric bcpl
由于有人问我使用前缀“0x”表示十六进制数字背后的原因,我一直在深入研究 BCPL 的历史。
在我的搜索中,我偶然发现了这个代币背后历史的非常好的解释。(为什么十六进制数要加上0x前缀?)
然而,从这篇文章中,又引发了另一个问题:
对于八进制常量,BCPL 是否使用8 <digit>(根据规范:http://cm.bell-labs.com/cm/cs/who/dmr/bcpl.pdf)或是否使用#<digit>(根据http://rabbit.eng .miami.edu/info/bcpl_reference_manual.pdf)或者这两种语法在该语言的不同实现中都有效吗?
我还在这里找到了第二个答案,它使用了 # 语法,这进一步引起了我对这个主题的兴趣。(为什么用前导零来表示八进制数?)
任何历史见解都将受到高度赞赏。
BCPL 的语法有许多细微的变化。
例如,虽然我们使用的单元具有 16 位单元(因此可以从位于的字地址(字地址是字节地址的一半)中x!y获取 16 位字x + y,但我们还需要从字节地址中提取和字节值(因为我们主要是在 6809 字节可寻址 CPU 上创建操作系统和控制软件)。
因此除了:
x!y - get word from byte address (x + y) * 2
Run Code Online (Sandbox Code Playgroud)
我们也有
x!%y - get byte from byte address (x * 2) + y
x%!y - get word from byte address x + (y * 2)
x%%y - get byte from byte address x + y
Run Code Online (Sandbox Code Playgroud)
我非常确定它们是特定于实现的,因为我从未在其他地方见过它们。早在语言标准像今天这样重要之前,BCPL 就已经存在了。
规范的语言规范应该是 Richards 编写该语言以来的早期规范(您的第二份文档是大约十年后的 Essex BCPL 实现)。但请记住,Project MAC 是最早的迭代 - 之后也有很多进步。
例如,BCPL 用户指南的 2013 年修订版(请参阅Martin 的主页)指定#b,#o和#x作为各种非十进制基数的前缀。
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |