有没有人有一个有效的B编译器?

时间:2009-10-21 14:35:40

标签: compiler-construction b

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

以下是B的例子:

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

2 个答案:

答案 0 :(得分:13)

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

在Windows,Linux和OSX上运行(提供二进制文件;本着问题的精神,它是用一种不起眼的语言编写的),它会产生质量非常差的x86-32程序集。应该是GCC兼容的。它是用B上可用的参考资料重建的,几乎可以肯定不会反映出20世纪60年代的语言。值得注意的是,在缺少类型信息(B是无类型)的情况下,&a[b] == &*(a + b)规则无法在x86上保存,这意味着此任务实际上是不可能的(不需要求助于解释器)。 / p>

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

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

答案 1 :(得分:10)

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

在1974年至1976年的滑铁卢大学时间框架中,我记得在B中编写了CS作业而不是Algol-60,这是班上大多数人使用的。我接着为HP 2100A小型机编写了一个仿真器,但该代码很久以后就丢失了。

据我所知,B只在霍尼韦尔实现了它的36位字长,9位ASCII等。而且由于它的继承者C,同时击中了大学,它没有持续很长时间。

如果我没记错的话,MKS的创始人之一Trevor Thompson为B写了一个标准的I / O库,并在其中写了一个3D国际象棋游戏。如果你能设法追踪他,那么他就是一个曾经在B编译器上工作过的人。我只是看看LinkedIn,我发现了他。他是Satori Solutions的所有者之一。

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