Commit 25bcd246 authored by Taddeüs Kroes's avatar Taddeüs Kroes

Added README

parent 2eafc343
About
=====
This is a minimal compiler for the
[Brainfuck](https://en.wikipedia.org/wiki/Brainfuck) language, written for the
purpose of practicing Ocaml LLVM bindings and seeing how well LLVM optimizes
arrays. Brainfuck commands are transformed to LLVM IR, which is generated in
such a way that it is easy to optimize for LLVM's `opt` utility.
Building and usage
==================
Building the `bf` compiler (Debian dependencies):
$ sudo apt-get install ocaml llvm-3.4 libllvm-3.4-ocaml-dev
$ make
Building a brainfuck program (plain and optimized):
$ make hello hello-opt # compile file "hello.b" to binaries
$ ./hello
Hello World!
$ ./hello-opt
Hello World!
Quick compilation and running (deletes temporary binary after running):
$ echo ++++++++++++. | ./run.sh
$ ./run.sh < hello.b
Hello World!
Examining generated LLVM:
$ echo ++++++++++++. | ./bf
...
$ echo ++++++++++++. | ./bf | opt -O3 -S
...
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment