{"id":49872749,"url":"https://github.com/itsyunaya/rmcli","last_synced_at":"2026-05-15T10:28:11.111Z","repository":{"id":328049244,"uuid":"1107841406","full_name":"itsyunaya/rmcli","owner":"itsyunaya","description":"Register Machine simulator for the terminal, written in C++","archived":false,"fork":false,"pushed_at":"2025-12-19T12:58:50.000Z","size":88,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-22T04:57:49.135Z","etag":null,"topics":["cpp","register-machine"],"latest_commit_sha":null,"homepage":"","language":"C++","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/itsyunaya.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-01T17:21:43.000Z","updated_at":"2025-12-19T12:58:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/itsyunaya/rmcli","commit_stats":null,"previous_names":["itsyunaya/rmcli"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/itsyunaya/rmcli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsyunaya%2Frmcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsyunaya%2Frmcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsyunaya%2Frmcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsyunaya%2Frmcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/itsyunaya","download_url":"https://codeload.github.com/itsyunaya/rmcli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/itsyunaya%2Frmcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33063111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","register-machine"],"created_at":"2026-05-15T10:28:10.581Z","updated_at":"2026-05-15T10:28:11.105Z","avatar_url":"https://github.com/itsyunaya.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rmcli\nrmcli  is a register machine simulator for the commandline, written in C++. For now, it\nhas a basic featureset and can process instructions in two different modes,\n`interactive` and `fileinput`.\n\n## Building\n1. Clone the repository and `cd` into it\n``` \ngit clone https://github.com/itsyunaya/rmcli.git\ncd rmcli \n```\n2. Build the project\n``` \nmkdir build \u0026\u0026 cd build\ncmake ..\nmake\n```\nThe executable will be located in `rmcli/build/bin`.\n\n## Usage\nTo use it, simply run `rmcli` in the terminal, with either the `-f` or the `-i` option,\ndepending on which mode you want to choose. Running the program without arguments will\nprint a help menu instead.\n\n### Modes\nProcessing instructions can be done in two different ways, depending on what the user\nintends to achieve.\n\nIf it is desired to process an entire file at once, one can use the **file input mode**:\n```\nrmcli --file \u003cpath\u003e\n```\nHereby, the file should be a plain text one, and include only one instruction per line.\nWriting anything on the line after the instruction is safe, as the program ignores any\ninput beyond the expected register machine functions. Leaving empty lines for clarity is\nalso possible, although discouraged (line will be considered by the internal counter).\nTherefore, a correct file should look something like this:\n```\nDLOAD 5\nSTORE 1 // text can safely be put here (slashes not necesary)\nMUL 1\nEND\n```\nAfter the file has been processed, a table showing the accumulator and the first ten \nregisters including their values will be printed to the terminal. If a register has not\nbeen set to a value, it will instead show `undefined`.\n\nIf the user instead wants a sandbox-like environment, **interactive mode** can be used:\n```\nrmcli -i\n```\nUpon executing this command, the user can interface with the program by simply entering\nregister machine instructions, which get evaluated one at a time. Therefore, any \ninstruction utilizing the line counter like `JMP`, `JEQ`, etc. will still be accepted, \nbut won't have any effect. If the user wishes to reset the register machine, `END` can be\nexecuted, which will print the register table like in file input mode, and revent the\nmachines state to its default.\n\nTo exit, one can simply type `exit`, `quit` or press `CTRL-D`.\n\n### Register machine instructions\nIn the following, all instructions which the register machine accepts will be outlined.\nIf you feel like an instruction is missing, \n[open an issue](https://github.com/itsyunaya/rmcli/issues/new) and explain what it should\ndo and how exactly it functions.\n\n```\nDLOAD i     Loads a number into the accumulator\nLOAD i      Loads the number stored in register i into the accumulator\nSTORE i     Stores the number present in the accumulator into register i\nINC         Increases the number in the accumulator by one\nDEC         Decreases the number in the accumulator by one\nADD i       Adds the number stored in the register i to the accumulator\nADDI i      Adds the number i to the accumulator\nSUB i       Subtracts the number stored in the register i from the accumulator\nSUBI i      Subtracts the number i from the accumulator\nMUL i       Multiplies the number stored in the register i with the one in the accumulator\nMULI i      Multiplies the number i with the one in the accumulator\nDIV i       Divides the number stored in the accumulator by the number stored in register i\nDIVI i      Divides the number stored in the accumulator by the number i\nMOD i       Gets the modulo of dividing the accumulator by the number stored in register i\nJMP i       Jumps to line i\nJEQ i       If the accumulator's value equals 0, jump to line i\nJNE i       If the accumulator's value does not equal 0, jump to line i\nJGE i       If the accumulator's value is greater or equal to 0, jump to line i\nJGT i       If the accumulator's value is greater than 0, jump to line i\nJLE i       If the accumulator's value is equal or less than 0, jump to line i\nJLT i       If the accumulator's value is less  than zero, jump to line i\nEND         Stops execution and prints a table with the values of the first ten registers \u0026 accumulator\n```\n\n## Afterword\nSince this is my first project in C++, expect some bugs and quirks to be present.\nIncase you encounter one, please \n[report it](https://github.com/itsyunaya/rmcli/issues/new). Other kinds of feedback are\nalso appreciated.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsyunaya%2Frmcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitsyunaya%2Frmcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitsyunaya%2Frmcli/lists"}