{"id":24394548,"url":"https://github.com/dcdeepesh/abm","last_synced_at":"2026-05-16T22:32:22.371Z","repository":{"id":253395275,"uuid":"697109558","full_name":"dcdeepesh/abm","owner":"dcdeepesh","description":"A Boring Machine","archived":false,"fork":false,"pushed_at":"2024-08-16T10:26:22.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T02:44:14.360Z","etag":null,"topics":["assembly","interpreter","virtual-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/dcdeepesh.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":"2023-09-27T04:34:05.000Z","updated_at":"2024-08-16T10:40:05.000Z","dependencies_parsed_at":"2024-08-16T12:56:10.544Z","dependency_job_id":"b934e6a2-5bce-4a1f-853e-769861184b07","html_url":"https://github.com/dcdeepesh/abm","commit_stats":null,"previous_names":["dcdeepesh/abm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dcdeepesh/abm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcdeepesh%2Fabm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcdeepesh%2Fabm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcdeepesh%2Fabm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcdeepesh%2Fabm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcdeepesh","download_url":"https://codeload.github.com/dcdeepesh/abm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcdeepesh%2Fabm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33121099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["assembly","interpreter","virtual-machine"],"created_at":"2025-01-19T20:00:45.517Z","updated_at":"2026-05-16T22:32:22.354Z","avatar_url":"https://github.com/dcdeepesh.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ABM - A Boring Machine\n\nABM is a stack-based virtual machine with an interpreted assembly-like source code syntax.\nThis was just a personal project to learn and experiment, and is not suited for any real-world\nuse. As a result, ABM is not Turing complete. You are welcome to try it out though.\n\n[Example ABM code](samples/complete/factorial.abm) (calculates and prints the factorial of 7):\n```\nlvalue i\npush 7\n:=\n\nlvalue result\npush 1\n:=\n\nlabel loop\n    rvalue i\n    push 0\n    =\n    gotrue end\n\n    lvalue result\n    rvalue result\n    rvalue i\n    *\n    :=\n\n    lvalue i\n    rvalue i\n    push 1\n    -\n    :=\ngoto loop\n\nlabel end\nrvalue result\nprint\n```\nOutput:\n```\n5040\n```\n\n## Building\n\nABM doesn't have any dependencies and has a very simple build process, therefore no build tools are used.\nTo build from source, clone this repository, `cd` into `src`, and run:\n```sh\n# *nix (bash):\ngcc -I. -o abm *.c **/*.c\n# Windows (Powershell)\ngcc -I. -o abm.exe @(Get-ChildItem -Recurse -Filter *.c).FullName\n```\nThis will create an executable named `abm` (or `abm.exe`) in the directory.\n\n## Usage \u0026 Source Code\n\nThe ABM binary takes a single argument, an ABM source file. Providing no argument displays a short\nusage. The file can be named anything and the extension doesn't matter, even though the provided\nsamples use the extension `.abm`.\n\nThe ABM source code resembles assembly code, but technically is higher level than assembly. Therefore,\nit is more appropriate to call it an interpreted language that just resembles assembly code.\n\nEach line in an ABM source file contains an instruction and the argument to that instruction (if any),\nseparated by the first space. The lines are trimmed when being parsed, allowing the code to be indented\nas needed. Empty lines (and lines containing only whitespace) are skipped. Comments are not supported.\n\nThe full instruction set for ABM can be found [in the ISA](docs/isa.md).\n\n## Samples\n\nSome samples are included in the repository in `samples`. The `.abm` files contain the sources and the\ncorresponding `.output` files contain their outputs. The directory `complete` contains more \"complete\"\nsamples, like full programs, rather than small test programs like the rest of the samples.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcdeepesh%2Fabm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcdeepesh%2Fabm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcdeepesh%2Fabm/lists"}