Skip to content
master
Switch branches/tags
Code

B compiler

Here you can find two B compilers. One written in C and one written in B itself. Both generate the original threaded code as described here.

The state of this repo is rather chaotic right now. sorry.

B compiler in C

This compiler I wrote to bootstrap B. It is a single executable and can produce code for PDP-11, amd64, mips32 and riscv64 assemblers. It is good enough to compile bc.b and ba.b.

pdp-8 output should be mostly working, runtime not started yet.

B compiler in B

This one is the real deal. It works in two phases. bc.b compiles a B file to an intermediate format and ba.b further processes it to assembly. Except for word size the first pass should mostly be platform independent. The second pass is assembler and to some degree platform dependent.

Platforms

B has been confirmed to compile itself on the following platforms:

  • Linux amd64
  • Linux mips32 (ci20 devboard)
  • Linux riscv64
  • 2.11BSD PDP-11

TODO

  • Get rid of chaos
  • More platforms
  • make mips code work on cpus with load delay