mindblown-0.2.1 is not a library.
mindblown
A brainf**k to x86 ELF compiler written in Rust meant for Linux and Windows under WSL. Codegen is made from brainf**k directly to x86 Intel assembly without any IR. Most of the optimization work is done when parsing, so an integrated interpreter can benefit from it too.
This is in a very early state. Stay tuned for more features and optimizations like the ones described in TODO.
Note:
samples/patterns.pywas solely used for detecting common loop patterns in classical brainf**k programs for present and future refactoring.
Table of Contents
Prerequisites
Getting started
- Get the latest binary release installed on your machine
# Get the latest cargo release
# Build from source
- Use the
mindblowncommand to compile your brainf**k program
# The resulting binary will be named as the input program BUT without extension
YOU ARE NOW READY TO USE MINDBLOWN! 🎉
Debug using the integrated interpreter
Note: The integrated interpreter uses the snailquote syntax for input. Please refer to their documentation for more information.
Inspiration
- https://github.com/pretzelhammer/rust-blog/blob/master/posts/too-many-brainfuck-compilers.md#intro-to-x86 for the x86 assembly codegen
- https://github.com/pretzelhammer/brainfuck_compilers/blob/master/src/x86_64/compiler.rs for examples of the x86_64 assembly codegen in Rust
- http://calmerthanyouare.org/2015/01/07/optimizing-brainfuck.html for optimizing brainf**k
- http://brainfuck.org for most programs in the
samplesfolder
TODO
- Make the interpreter take in newlines
- Add various CLI features such as choosing the output file, etc.
- Implement clearer and smarter error handling
- Optimize loop handling to Assembly
- Allow for more optimization