mindblown

Crates.iomindblown
lib.rsmindblown
version0.4.1
sourcesrc
created_at2022-09-08 02:27:01.165508
updated_at2022-09-29 20:44:14.997191
descriptionBrainfuck to x86 ELF compiler with batteries included.
homepage
repository
max_upload_size
id660741
size72,154
Noxtal (Noxtal)

documentation

README

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
Commit count: 0

cargo fmt