This directory contains several Brainfuck interpreters in various states of sophistication, from the simplest approach to an optimizing JIT compiler:
-
bf.cis the stupidest one and the oldest by far -
bf-faster-loops.cprecomputes loop jumps -
bf-optimizing.cimproves on that by changing[-]+loops into assignments -
bf-jit.cadds JIT compilation for Intel x86-64 -
bf-jit-opt.ctries a bit harder to avoid looping on the current value -
bf-jit-unsafe.cabolishes all boundary checks when moving across the tape -
bf-jit-unsafe-opt.cmakes use of immediate offsets to modify values
I recommend using a tool such as meld to view the differences.
Just run make in this directory to have them all built, and append
CPPFLAGS=-DDEBUG to get dumps of the IR for the more sophisticated JITs.