compiler construction - programas - ¿Alguien tiene un compilador B de trabajo?
programas compiladores (2)
¿Alguien sabe donde puedo conseguir un buen compilador B? He buscado un compilador B desde hace algún tiempo, pero he tenido algunas dificultades para encontrar algo completo para un sistema Windows o Linux.
Aquí hay un ejemplo de B:
main( ) {
auto a, b, c, sum;
a = 1; b = 2; c = 3;
sum = a+b+c;
putnumb(sum);
}
¿Tiene un Honeywell 6050 con GCOS para ejecutarlo? O tal vez un emulador? Sé que los 360 y 370 de IBM han sido emulados, pero aún no he oído hablar de un emulador Honeywell 6000.
En la Universidad de Waterloo, en el período de 1974-76, recuerdo haber escrito tareas de CS en B en lugar de Algol-60 que la mayoría de las personas de la clase estaban usando. Luego escribí un emulador para una minicomputadora HP 2100A, pero ese código se perdió hace mucho tiempo.
Que yo sepa, B solo se implementó en Honeywell con su longitud de palabra de 36 bits, ASCII de 9 bits, etc. Y como su sucesor C, estaba llegando a las universidades al mismo tiempo, no duró mucho.
Si recuerdo bien, Trevor Thompson, uno de los fundadores de MKS, escribió una biblioteca de E / S estándar para B y también escribió un juego de ajedrez en 3D. Si puede lograr rastrearlo, él es alguien que, en un momento dado, tuvo en sus manos un compilador B. Acabo de echarle un vistazo a LinkedIn y lo encontré. Es uno de los propietarios de Satori Solutions .
Si tiene una máquina que ejecuta GCOS o un emulador Honeywell serie 60 que ejecuta GCOS, entonces podría usar el compilador B incluido en el Paquete de herramientas UW de Thinkage. Es compatible con los programas por lotes y TSS.
A raíz de esta pregunta, ahora hay un compilador B disponible desde aquí: https://github.com/Leushenko/ybc
Se ejecuta en Windows, Linux y OSX (se proporcionan los binarios; en el espíritu de la pregunta está escrito en un lenguaje oscuro), donde produce un ensamblaje x86-32 de muy baja calidad. Debe ser compatible con GCC. Se ha reconstruido a partir del material de referencia disponible en B, y casi con toda seguridad no refleja el lenguaje como era en realidad en la década de 1960. En particular, en ausencia de información de tipo (B no está tipificada), la regla &a[b] == &*(a + b)
no se puede mantener en x86, lo que significa que esta tarea es efectivamente imposible (sin recurrir a un intérprete).
Aparte de eso, el comentario de Pavel Minaev es correcto: el lenguaje descrito es extremadamente pequeño, mucho más pequeño que C, y es probable que un programador compilador experimentado / competente pueda escribirle uno por la tarde.
Desafortunadamente, esta es solo una respuesta parcial, ya que no pude decirle dónde encontrar un buen compilador B.