{"id":20350584,"url":"https://github.com/seniru/bfasm","last_synced_at":"2025-03-04T16:30:03.156Z","repository":{"id":245485679,"uuid":"817357077","full_name":"Seniru/bfasm","owner":"Seniru","description":"Brainfuck interpreter written in assembly","archived":false,"fork":false,"pushed_at":"2024-07-09T15:33:28.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-14T23:53:39.476Z","etag":null,"topics":["assembly","assembly-x86-64","brainfuck","brainfuck-interpreter","esoteric-language"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Seniru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-19T14:31:22.000Z","updated_at":"2024-07-09T15:47:15.000Z","dependencies_parsed_at":"2024-06-25T14:39:44.947Z","dependency_job_id":"0e706af9-5169-4e3e-8180-65e9faa301c3","html_url":"https://github.com/Seniru/bfasm","commit_stats":null,"previous_names":["seniru/bfasm"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seniru%2Fbfasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seniru%2Fbfasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seniru%2Fbfasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seniru%2Fbfasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Seniru","download_url":"https://codeload.github.com/Seniru/bfasm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241880186,"owners_count":20035914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","assembly-x86-64","brainfuck","brainfuck-interpreter","esoteric-language"],"created_at":"2024-11-14T22:32:20.765Z","updated_at":"2025-03-04T16:30:03.117Z","avatar_url":"https://github.com/Seniru.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# bfasm\n\u003e Brainfuck interpreter and debugger written in Assembly\n\n### Usage\n```bat\nUsage: ./bf [options] [--file filename | --code code]\n-f, --file filename :\tRead the code from the file\n-c, --code code :\tProgram passed in as a string\n\nOptions:\n-d, --debug :\tStart the program in the debugging mode\n```\n\n### Features\n\n- Brainfuck interpreter:\n  - Interpret Brainfuck code from a file (`--file [filename]` option) or pass the code as an argument (`--code [code]` option)\n- Debugger:\n  - Enter the debugging mode with the `--debug` option. This debugger is heavily inspired from the GDB's designs. The debugger includes 3 layouts for memory, code and output. Press enter key to step into the next instruction. Scroll support is enabled for memory viewer. \n\n### About Brainfuck\n\nBrainfuck is an esoteric language consisting with only 8 operators. Brainfuck operates on an array of memory cells, each initially set to zero. (In the original implementation, the array was 30,000 cells long, but this may not be part of the language specification; different sizes for the array length and cell size give different variants of the language). There is a  [pointer](https://esolangs.org/wiki/Pointer \"Pointer\"), initially pointing to the first memory cell. *(defintion from [esolangs.org](https://esolangs.org/wiki/Brainfuck))*\n\nThe commands are: \n\n|Command|Description|\n|--|--|\n|`+`|Incrememnt the memory cell at the pointer|\n|`-`|Decrement the memory cell at the pointer|\n|`\u003e`|Move the pointer to the right|\n|`\u003c`|Move the pointer to the left|\n|`.`|Output the value (corresponding ASCII value) of the current cell|\n|`,`|Input a character and store it's ASCII value in the current cell|\n|`[`|Enter if the current cell value is not 0, else skip to the matching `]`|\n|`]`|Loop back to the matching `[` if the current cell value is not 0. Exit the loop otherwise|\n\nCheck [esolangs.org](https://esolangs.org/wiki/Brainfuck) for more detailed information about Brainfuck\n\n### Why assembly?\nThere are 2 reasons to choose assembly as the primary developement language for this projrect.\nNumber one, and the primary reasons is to just flex on people. Both assembly and brainfuck are considered to be some hardcore stuff among many people. That being said, I'm not the smartest person alive. So if there are any issues in these codes, I'd love to humbly listen and learn.\n\nReason number two is that brainfuck feels very close to assembly. It is just incrementing and decrementing stuff, moving around places, and doing basic I/O.\n\n\n### Building\n\nThis project uses system calls provided by Linux so right now this project only supports Linux platforms.\n\nTested on Ubuntu 22.04.4 LTS x86_64 \n\nFollowing tools are required for building\n- gcc (this project uses the `as` assembler provided by gcc)\n- make\n- Additionally, you will require git if you want to clone\n\nCheck your distribution's documentation on how to install these.\n\nTo make this project follow these steps\n\n```bash\n# first clone the repo\ngit clone https://github.com/Seniru/bfasm\ncd bfasm\n# then just make\nmake\n```\nRun `make test` to run tests\n\n### Contributing\nHere are some ways you can contribute to this project\n\n- Writing some tests (add more cool and relevant brainfuck programs  inside the `test` directory)\n- Bug fixes\n- New features, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseniru%2Fbfasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseniru%2Fbfasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseniru%2Fbfasm/lists"}