aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
8 daysChange vec_append signature to ensure ptr is constantAryadev Chavali
13 daysSeparate out node type as an enumeration.Aryadev Chavali
13 daysRefactor obc for new vector based assembler and better config parserAryadev Chavali
Simpler implementation for configuration parsing with default values. Now using new assembler functions.
13 daysRefactor assembler to use vec_t instead of bufferAryadev Chavali
Clearer, precise and no double pointers.
13 daysIntroduce and implement vec_tAryadev Chavali
A vec_t is a dynamic array, separate to a buffer. Should make it easier to distinguish purposes using these two data types.
13 daysDelete buffer stretchy functionsAryadev Chavali
A buffer should be a strictly sized array representing a file in memory. No dynamic size functions.
13 daysFix MAX macroAryadev Chavali
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).