aboutsummaryrefslogtreecommitdiff
                      ___________________________

                       OREO'S BRAINFUCK COMPILER

                            Aryadev Chavali
                      ___________________________


Here is a simple brainfuck compiler/interpreter written in C.  Most of
the code was written in 2023, but the compiler code was written in 2024.


Build instructions
==================

  A C compiler capable of compiling C11 is required.  `clang' and `gcc'
  have been tested.  `yasm' and `ld' are required for `obc', but the
  assembly transpile step should work without them.

  + To build release: `make all RELEASE=1'
  + To build debug: `make all RELEASE=0'
  + To run examples: `make examples'


Goals
=====

  + [X] Complete reference interpreter for brainfuck
  + [X] Native compiler


Notes
=====

  I cheat heavily to make the native compiler here; I'm not writing my
  own ELF executables by hand (using `elf.h').  Instead I write valid
  assembly code in a string buffer, then compile that via `yasm' and
  `ld'.

  It shouldn't be all that difficult to make a JIT from this point; just
  translating the assembly snippets into machine code and embedding that
  into an executable page.