当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《有没有人有一个有效的B编译器?》经验,为你挑选了2个好方法。

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

这是B的一个例子:

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

Leushenko.. 13

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

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

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

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



1> Leushenko..:

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

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

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

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


凉!使用`.`作为B中的有效标识符,也许我们最终会将一些BrainF*ck类型混淆在代码高尔夫上:)
@KeithThompson` .`列在"用户对MH-TSS上的B的引用"中的字母字符中,它描述了Thompson手册中的语言略有不同的版本(B未标准化;我假设设计师添加了以下功能: -什么时候).
关于`&a [b] ==&*(a + b)`在x86上不正确:实际上很容易解决。请记住,B是*字*寻址的,不是*字节*寻址的。在指针上添加一个不会将其增加到下一个字节,而是将其增加到下一个单词---在x86等非单词寻址平台上,每当取消引用时,都需要将指针乘以单词大小它。(B根本无法寻址字节。)

2> Michael Dill..:

您是否有运行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工具包中包含的B编译器.它支持批处理和TSS程序.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有