aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-12-03Fix READMEAryadev Chavali
2024-12-03Added proper build instructionsAryadev Chavali
2024-12-03Added Make recipes for examplesAryadev Chavali
2024-12-03Fix errors with clangAryadev Chavali
2024-12-03Update READMEAryadev Chavali
2024-12-03Implement compiler (obc)Aryadev Chavali
2024-12-03Clean all asm files as wellAryadev Chavali
2024-12-03asm_write_{init, exit} when asm_translate_nodesAryadev Chavali
2024-12-03Fix usage and error messagesAryadev Chavali
2024-12-03Add better error correcting code for bad loops in parserAryadev Chavali
2024-12-03Fix errors due to no loopsAryadev Chavali
2024-12-03Build two executables: obi and obcAryadev Chavali
The names stand for Oreo's Brainfuck Interpreter and Oreo's Brainfuck Compiler, separate tasks that shouldn't be packaged in one executable.
2024-12-03Wrote an assembler (transpiles brainfuck into assembly code)Aryadev Chavali
Provides: + Transpilation from brainfuck code into intel style assembly + functions to assemble and link code
2024-12-03Simplify main interpreterAryadev Chavali
No need to interpret "multiple files in sequence". Just execute the one file given.
2024-12-03Capture number of loops in PResult during parsingAryadev Chavali
2024-12-03Moved MEMORY_DEFAULT to lib.hAryadev Chavali
2024-12-03Simplify build systemAryadev Chavali
RELEASE and DEBUG builds have differing build flags, triggered by setting RELEASE variable. No longer doing object based compilation because: + gcc is fast enough without it + stale code compilation bugs are annoying + having one output binary to clean-up is just easier when switching build-types
2024-12-03Implement buffer_t functions to make it stretchyAryadev Chavali
2024-12-03Introduce some nice typedefs in lib.hAryadev Chavali
2024-12-03Add LicenseAryadev Chavali
2024-12-03Added a READMEAryadev Chavali
2024-12-03Some general reworking, error handlingAryadev Chavali
2024-12-03Added some examples to test the interpreterAryadev Chavali
2023-09-02Debug messagesAryadev Chavali
Flag which provides some helpful messages for debugging.
2023-09-02Interpreter COMPLETE!Aryadev Chavali
Really easy implementation considering opcodes are super simple. I was right to implement the loop_ref system so at parse time we have resolved references and don't need to do it at runtime (helps with compilation I guess as well).
2023-09-02New module for parser functionsAryadev Chavali
Same principle as main->lib (previous commit).
2023-09-02New module for functions I no longer need to work onAryadev Chavali
lib.(h|c) basically has structures and functions I no longer want to stare at in main.c
2023-09-02Better command line usageAryadev Chavali
Now you can use command line arguments to list a set of input files for the interpreter to use. Currently outputs the data parsed per file.
2023-09-02Chunk allocator for file handlingAryadev Chavali
Apparently you can't just `fseek` because it's "not portable" and "deeply offensive" or whatever, so here's a really dirty chunk based allocator which uses `fread` to just read chunks of data at a time and basically runs around this issue. While it's slower than an fseek solution for general files, this solution allows pipes and other _weird_ things that count as "files" to just werk.
2023-09-02Better error reportingAryadev Chavali
Using a buffer structure allows me to pass more information to callers and a bit more discretion over how data is passed. Better error reporting via having a file handle and reporting it Emacs/GCC style.
2023-09-02INITAryadev Chavali
Simple parser, took like an hour. Not very smart but at least it's like O(n).