26

有谁知道我在哪里可以得到一个好的 B 编译器?我已经搜索了一段时间的 B 编译器,但是在为 Windows 或 Linux 系统找到完整的东西时遇到了一些困难。

以 B 为例:

main( ) {
auto a, b, c, sum;
a = 1; b = 2; c = 3;
sum = a+b+c;
putnumb(sum);
}
4

2 回答 2

16

在这个问题的提示下,现在可以从这里获得一个 B 编译器:https ://github.com/Leushenko/ybc

在 Windows、Linux 和 OSX 上运行(提供二进制文件;本着问题的精神,它是用一种晦涩的语言编写的),在那里它产生质量很差的 x86-32 程序集。应该是 GCC 兼容的。它是根据 B 上可用的参考资料重建的,几乎可以肯定它不能反映 1960 年代的语言。值得注意的是,在没有类型信息的情况下(B 是无类型的),该&a[b] == &*(a + b)规则不能在 x86 上成立,这意味着这个任务实际上是不可能的(不求助于解释器)。

除此之外,Pavel Minaev 的评论是正确的:所描述的语言非常小,远小于 C,一个有经验/有能力的编译器程序员可能会在一个下午为您编写一个。

不幸的是,这只是部分答案,因为我无法告诉您在哪里可以找到好的B 编译器。

于 2014-10-08T01:03:25.740 回答
11

您有运行 GCOS 的 Honeywell 6050 来运行它吗?或者也许是一个模拟器?我知道 IBM 的 360 和 370 已被仿真,但我还没有听说过 Honeywell 6000 仿真器。

在 1974-76 年的滑铁卢大学,我记得我用 B 而不是班上大多数人使用的 Algol-60 写 CS 作业。我继续为 HP 2100A 小型计算机编写了一个模拟器,但该代码早已丢失。

据我所知,B 仅在 Honeywell 上实现,其 36 位字长、9 位 ASCII 等。由于它是继任者 C,同时进入大学,它并没有持续多久。

如果我没记错的话,MKS 的创始人之一 Trevor Thompson 为 B 编写了一个标准的 I/O 库,并且还在其中编写了一个 3D 国际象棋游戏。如果你能设法找到他,他就是一个曾经接触过 B 编译器的人。我刚看了一下LinkedIn,就找到了他。他是Satori Solutions的所有者之一。

如果您有一台运行 GCOS 的机器,或一台运行 GCOS 的 Honeywell 系列 60 仿真器,那么您可以使用Thinkage的UW 工具包中包含的 B 编译器。它支持批处理和 TSS 程序。

于 2009-10-21T15:01:00.963 回答