SuperStormer / c2logic

Compiles C code to Mindustry logic.
MIT License
15 stars 6 forks source link
compiler mindustry mindustry-logic

c2logic

Compiles C code to Mindustry logic. Still in beta, so compiled output may not be fully optimized. Requirements are the pycparser package and the C preprocessor (cpp).

Installation

pip install git+https://github.com/SuperStormer/c2logic

Documentation

Run the command line tool using:

c2logic filename -O optimization_level

where filename is a string and optimization_level is an optional integer.

Optimization Level:

  1. completely unoptimized.
  2. the default
    • modify variables without using a temporary
  3. more optimizations
    • remove uncalled functions
  4. turns on some potentially unsafe optimizations
    • augmented assignment and pre/postincrement/decrement don't modify __rax
    • returning from main becomes equivalent to end

Locals are rewritten as _<varname>_<func_name>. Globals are unchanged.

Special Variables:

When writing your code, you must include c2logic/builtins.h, which is located in the python include directory (location depends on system, mine is at ~/.local/include/python3.8/). A quick way to find this is python3 -c "from c2logic.compiler import get_include_path; print(get_include_path())" (use python if you are using windows).

See include/builtins.h for API definitions and examples for API sample usage.

Supported Features

Unsupported Features