GitXplorerGitXplorer
a

brainfuck-cpu

public
3 stars
2 forks
0 issues

Commits

List of commits on branch master.
Unverified
19760a3cc327fe7a2efa4159374ee84e6d405a86

Fix a bug with brainfuck code ending by ]

aarthaud committed 9 years ago
Unverified
7940cdee195dbbfae10b0eff8b798b00d2ab4be5

Add instruction clear

aarthaud committed 9 years ago
Unverified
8f87ec0aeb9850d0d9725b80d0e00f3b8ea23f96

Remove comments and whitespaces in the generated bfvm

aarthaud committed 9 years ago
Unverified
ad65362695a91c7cdd32438a7dd7f5a1c5004655

Fix program loading: the end of an assembly file is 4 null bytes

aarthaud committed 9 years ago
Unverified
0ec2b5ecdae90479eed74b59b83aedcc965ed79c

Add instruction setb

aarthaud committed 9 years ago
Unverified
2d055f7e76c4d3ef00eb8a237903ac446e41d9b2

Fix: NOP has length 1

aarthaud committed 9 years ago

README

The README file for this repository.

Brainfuck CPU

This is an experiment where I suppose we are in a world where we only have:

  • a CPU able to run Brainfuck code
  • a text editor

For information, Brainfuck is a minimalism esoteric programming language, but still Turing-complete.

Brainfuck interpreter and compiler

bf.py is the Brainfuck interpreter and compiler available.

You can execute a Brainfuck source code by running ./bf.py code.bf Using the compiler (option -c) is a way to make the code faster (it uses gcc or clang with flag -O3).

Notes: cells are 8-bit and the special character EOF is 0xff (255). You can use any Brainfuck compiler meeting these criteria.

For more details, run ./bf.py -h

Plan

For now, my goal is to be able to run C code on that CPU, because C is the most commonly used programming language.

I think the best idea is to start by creating a virtual machine able to run a higher level language, such as a RISC Assembly language. Indeed, Brainfuck is way to low level: I want to be able to handle pointers, but there is no easy way in Brainfuck to get the byte at a specific address. That's why I'm building a virtual machine with an infinite table acting as a Random-access memory, based on the idea of INSHAME: Memory efficient Brainfuck tables. The virtual machine will use the Von Neumann architecture, putting the program and data in the same memory.

Brainfuck virtual machine

I am currently working on a virtual machine written in Brainfuck and able to run a simple assembly language.