Skip to content

Brainfuck to x86 ELF compiler with batteries included written in Rust meant for Linux and Windows under WSL.

License

Notifications You must be signed in to change notification settings

Noxtal/mindblown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mindblown

Brainfuck to x86 ELF compiler with batteries included written in Rust meant for Linux and Windows under WSL. Code generation is made from brainf**k directly to x86 Intel assembly as 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.py was 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
$ cargo install mindblown

# Build from source
$ git clone https://github.com/Noxtal/mindblown.git
$ cd mindblown
$ cargo build --release

Usage

mindblown 0.4.0
Brainfuck to x86 ELF compiler with batteries included.

USAGE:
    mindblown [SUBCOMMAND]

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

SUBCOMMANDS:
    compile    Compiles a Brainfuck file.
    help       Print this message or the help of the given subcommand(s)

If no subcommand is provided, mindblown will default to the intergrated interpreter, which also uses the snailquote syntax for input. Please refer to their documentation for more information.

Compile a brainf**k program

mindblown-compile
Compiles a Brainfuck file.

USAGE:
    mindblown compile [OPTIONS] <FILE>

ARGS:
    <FILE>    The Brainfuck file to compile.

OPTIONS:
    -h, --help               Print help information
    -o, --output <OUTPUT>    The output file.
    -r, --run                Run the compiled executable after compiling.

Inspiration

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