87 lines
2 KiB
Markdown
87 lines
2 KiB
Markdown
|
|
# Brainfucked
|
|
|
|
Its brainfuck but with manual memory allocation :3
|
|
|
|
All normal brainfuck is valid brainfucked. Though your tape only starts with as much memory that can hold a pointer. In other words, if you're on a 64 bit computer you get 8 cells, and if you're on a 32bit computer you get 4 cells.
|
|
|
|
Pointers in brainfucked span as many cells as they are bytes.
|
|
|
|
Just like brainfuck, cells wrap from 0 to 255, and vice versa, and also the tape wraps from front to end and end to front. The tape will not wrap though if you are inputting a string.
|
|
|
|
## Commands
|
|
|
|
`<` Move pointer left
|
|
|
|
`>` Move pointer right
|
|
|
|
`+` Increment cell by one
|
|
|
|
`-` Decrement cell by one
|
|
|
|
`[` Jump past the matching ] if the cell at the pointer is 0
|
|
|
|
`]` Jump back to the matching [ if the cell at the pointer is nonzero
|
|
|
|
`.` Output ascii at current cell
|
|
|
|
`,` Input ascii into current cell
|
|
|
|
`*` Allocate new tape size of current cell and replace with pointer
|
|
|
|
`!` Free allocated pointer in current cell
|
|
|
|
`(` Go to tape at pointer in current cell
|
|
|
|
`)` Leave tape last entered
|
|
|
|
`` ` `` Output null terminated string at current cell
|
|
|
|
`~` Input string into current cells with max length in current cell
|
|
|
|
`%` Clear screen
|
|
|
|
`$` Zero n cells where n is the value of the current cell
|
|
|
|
`\` Comment out the rest of the line
|
|
|
|
## Usage
|
|
|
|
The `brainfucked` command expects only one argument which is the path to a file containing brainfucked.
|
|
|
|
For example:
|
|
```
|
|
$ brainfucked helloworld.bfd
|
|
```
|
|
|
|
Brainfucked can also read from standard in, so the following would also work.
|
|
|
|
```
|
|
$ cat helloworld.bfd | brainfucked
|
|
```
|
|
|
|
## License
|
|
|
|
This project is Licensed under the [WTFPL](http://www.wtfpl.net/)
|
|
|
|
## Compilation
|
|
|
|
### Linux / Mac
|
|
|
|
Make sure to have `gcc` and `make` installed, and then run
|
|
|
|
```shell
|
|
$ make # compiles the program
|
|
$ sudo make install # installs the binary
|
|
```
|
|
|
|
If you wish to remove the program, you can run
|
|
|
|
```shell
|
|
$ sudo make uninstall # removes the binary
|
|
```
|
|
|
|
### Windows
|
|
|
|
Uh someone made a cmake file, you can use that.
|
|
Just do the thing for the thing and the thing will work.
|