All Projects → cameronswinoga → Yabfc

cameronswinoga / Yabfc

Yet Another Brainfuck Compiler; No dependencies and from the ground up

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Yabfc

flatboard
A very Fast & Lightweight Flat-file forum software, Markdown and BBcode editor.
Stars: ✭ 30 (-88.85%)
Mutual labels:  no-dependencies
Ballerina Lang
The Ballerina Programming Language
Stars: ✭ 2,946 (+995.17%)
Mutual labels:  compiler
Gleam
⭐️ A friendly language for building type-safe, scalable systems!
Stars: ✭ 3,463 (+1187.36%)
Mutual labels:  compiler
subjx
Drag/Resize/Rotate Javascript library
Stars: ✭ 155 (-42.38%)
Mutual labels:  no-dependencies
hx
Hex editor for the terminal using plain C99 + POSIX libs.
Stars: ✭ 132 (-50.93%)
Mutual labels:  no-dependencies
Doma
DAO oriented database mapping framework for Java 8+
Stars: ✭ 257 (-4.46%)
Mutual labels:  no-dependencies
github-profile-card
Simple and easy to use widget with your GitHub profile — No dependencies
Stars: ✭ 98 (-63.57%)
Mutual labels:  no-dependencies
Clang
Mirror kept for legacy. Moved to https://github.com/llvm/llvm-project
Stars: ✭ 2,880 (+970.63%)
Mutual labels:  compiler
Graphit
GraphIt - A High-Performance Domain Specific Language for Graph Analytics
Stars: ✭ 254 (-5.58%)
Mutual labels:  compiler
Mint
🍃 A refreshing programming language for the front-end web.
Stars: ✭ 3,607 (+1240.89%)
Mutual labels:  compiler
result
A lightweight C++11-compatible error-handling mechanism
Stars: ✭ 121 (-55.02%)
Mutual labels:  no-dependencies
state saver
Transferred to https://github.com/Neargye/yacppl
Stars: ✭ 14 (-94.8%)
Mutual labels:  no-dependencies
Deepc
vendor independent deep learning library, compiler and inference framework microcomputers and micro-controllers
Stars: ✭ 260 (-3.35%)
Mutual labels:  compiler
iutest
c++ testing framework
Stars: ✭ 58 (-78.44%)
Mutual labels:  no-dependencies
Smlvm
Smallrepo Virtual Machine
Stars: ✭ 265 (-1.49%)
Mutual labels:  compiler
GitHubSearch
GitHub iOS client with minimum third-party dependencies.
Stars: ✭ 34 (-87.36%)
Mutual labels:  no-dependencies
Cone
Cone Programming Language
Stars: ✭ 257 (-4.46%)
Mutual labels:  compiler
Pyverilog
Python-based Hardware Design Processing Toolkit for Verilog HDL
Stars: ✭ 267 (-0.74%)
Mutual labels:  compiler
Seq
A high-performance, Pythonic language for bioinformatics
Stars: ✭ 263 (-2.23%)
Mutual labels:  compiler
Duckuino
Simple DuckyScript to Arduino C converter.
Stars: ✭ 263 (-2.23%)
Mutual labels:  compiler

Yet Another BrainFuck Compiler

Description

YABFC is an optimizing compiler for the brainfuck language that uses no dependencies apart from standard POSIX headers. The output format is a 64 bit ELF executable file. Be sure to visit the wiki!

Building

make && sudo make install

Usage

Usage: yabfc [OPTION...] Files...
Compiles one or multiple brainfuck files to the ELF file format, in 64 bit mode

  -o, --output=FILE          Output to FILE
  -O, --optimize[=LEVEL]     Set optimization to LEVEL 1,2 or 3 (default 3)
  -q, -s, --quiet, --silent  Do not produce any output
  -v, --verbose[=LEVEL]      Set verbosity to LEVEL 1,2 or 3 (default 2)
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to <[email protected]>.

Testing

Make sure to have valgrind installed, then run ./integration_tests.sh. Valgrind is necessary to have a sandbox environment where 64 bit ELF's can run on any host OS.

Implementation

The data pointer in the executable is representated by the assembly stack pointer, as such and new stack allocation is guaranteed to be zeroed initially. Because of this, as well as the executable being set in 64 bit mode, allows YABFC to have an extremely large value range. The size for the data pointer is the stack size and the cell size is 264.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].