2018-05-21 20:55:48 +00:00
|
|
|
Gir is an optimizing brainfuck interpreter in Javascript.
|
|
|
|
|
|
|
|
Name
|
|
|
|
----
|
|
|
|
𒌋𒀜 gir (Sumerian) - n. kiln
|
|
|
|
|
|
|
|
License
|
|
|
|
-------
|
|
|
|
Everything in the repo is under Unlicense / CC0.
|
2018-05-21 20:58:06 +00:00
|
|
|
|
|
|
|
Status
|
|
|
|
------
|
|
|
|
Gir can parse and prettyprint to Javascript console programs in brainfuck.
|
2018-05-21 21:18:05 +00:00
|
|
|
Gir supports following optimizations:
|
|
|
|
|
2018-05-22 11:22:21 +00:00
|
|
|
* Turn runs of +- or <> into one command
|
2018-05-22 11:26:40 +00:00
|
|
|
* Turn [-] or [+] into one command
|
2018-05-22 12:08:23 +00:00
|
|
|
* Add offsets to commands that modify tape, to reduce moving tape head
|
2018-05-23 21:17:30 +00:00
|
|
|
|
|
|
|
TODO
|
|
|
|
----
|
2018-05-23 21:19:47 +00:00
|
|
|
### gir.js
|
2018-05-23 21:17:30 +00:00
|
|
|
* Implement `:;#`
|
|
|
|
* Optimization pass to turn multiply loops into commands that do `x += y * c`
|
|
|
|
* Make VM use a Proxied object that gives out 0 for nonexistent elements for
|
|
|
|
its memory
|
|
|
|
* Implement UTF-8 I/O
|
|
|
|
* Allow cycle maximum to be passed to `run()`
|
|
|
|
* Keep a cache of compiled programs in `run()`
|
2018-05-23 21:19:47 +00:00
|
|
|
|
|
|
|
### gir.html
|
|
|
|
* Implement a UI
|
|
|
|
|
|
|
|
### General
|
|
|
|
* Get this on NPM?
|