{"id":23450719,"url":"https://github.com/aaronc81/archer","last_synced_at":"2026-05-01T19:34:21.092Z","repository":{"id":269348686,"uuid":"882770555","full_name":"AaronC81/archer","owner":"AaronC81","description":"Machine instruction search engine","archived":false,"fork":false,"pushed_at":"2025-03-08T09:59:13.000Z","size":5720,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T10:33:06.316Z","etag":null,"topics":["architecture","assembly","ruby"],"latest_commit_sha":null,"homepage":"https://archer.computer","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AaronC81.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-11-03T18:03:57.000Z","updated_at":"2025-03-08T09:59:16.000Z","dependencies_parsed_at":"2025-03-08T10:35:18.222Z","dependency_job_id":null,"html_url":"https://github.com/AaronC81/archer","commit_stats":null,"previous_names":["aaronc81/archer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaronC81%2Farcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaronC81%2Farcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaronC81%2Farcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AaronC81%2Farcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AaronC81","download_url":"https://codeload.github.com/AaronC81/archer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248198865,"owners_count":21063626,"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":["architecture","assembly","ruby"],"created_at":"2024-12-24T00:14:29.305Z","updated_at":"2026-05-01T19:34:21.059Z","avatar_url":"https://github.com/AaronC81.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Archer\n\n\u003e **Hosted at [archer.computer](https://archer.computer)**\n\n## What is this?\n\nArcher is a web app which provides a searchable, filterable directory of machine instructions for a\nvariety of computer architectures.\n\nI grew frustrated at a lack of standardised, consistent documentation for people writing Assembly.\nYou're largely stuck with clunky vendor websites or ancient PDFs.\n\nArcher lets you answer questions like...\n\n- Which instructions can I use to write x87 floating point data to memory?\n    - Select only \"x87 FPU\" capability, filter to \"Memory: Store\"\n- What flag-pushing instructions does x86 have?\n    - Filter to \"Operands: None\" for input and output, and \"Memory: Store\"\n- How do I transfer a value from an Address Register to a Data Register on TriCore?\n    - Filter to \"Operands: Input: Address register\" and \"Operands: Output: Data register\"\n\n## Data sources\n\nArcher's data is a combination of:\n\n* Machine information dumped from **LLVM and some forks of it**\n    * Latest copy saved in `llvm/dump`\n* Hand-written YAML \"supplementary\" files, to imbue more human-friendly meaning to the LLVM info\n    * In `supp`\n\nThe latest list of forks used can always be found on the homepage of\n[archer.computer](https://archer.computer).\n\n## Building\n\nArcher is a static site once built, and can be used offline if you like.\n\nYou will need a Ruby \u003e3.4 and Node (tested on v18) to build the site.\n\n```\nnpm install\nbundle install\nbundle exec build_site.rb\n```\n\n## Refreshing LLVM data\n\nTo fetch or refetch the LLVM data dumps, install Docker then run:\n\n```\ncd llvm\n./generate_tablegen_dumps.sh\n```\n\nThis will take a fair bit of time, disk space, and RAM, as it creates multiple checkouts of LLVM and\npartially builds one of them.\n\n## Things to do\n\n- **Ideas**\n    - [x] _(Easy)_ Improve load times by loading JSON asynchronously\n    - [x] _(Easy)_ \"Clear filters\" button\n    - [x] _(Medium)_ Copy link to specific instructions\n    - [ ] _(Medium)_ Copy link to search filter sets\n    - [ ] _(Medium)_ Dark mode\n    - [ ] _(Hard)_ Group instructions with the same mnemonic, rather than displaying separately\n    - [ ] _(Hard)_ Properly collect and show register class members\n- **Issues**\n    - [x] Mnemonic search includes entire text, not just the mnemonic\n    - [ ] Instruction parsing seems broken - lots of errors for x86\n- **Architecture Support**\n    - [ ] ARM...\n        - [ ] Has operands as part of mnemonic (e.g. `ADCri`) - figure out how to represent\n        - [ ] Some operand types\n        - [ ] Core capabilities (Thumb, Thumb2, etc)\n        - [ ] Other capabilities\n        - [ ] Load/store info\n    - [ ] X86...\n        - [ ] Rest of the x86 capabilities\n        - [ ] Fix memory information (e.g. `mov mem -\u003e reg` variants are missing \"load\")\n    - [ ] Rest of the RISC-V capabilities\n    - [ ] More PowerPC\n\n## License\n\nAll Archer source code and supplementary data is licensed under the [MIT License](./LICENSE).\n\nLLVM dumped data in `llvm/dump` originates from the LLVM project and forks of it, therefore being\nlicensed under the [Apache License v2.0 with LLVM Exceptions](https://github.com/llvm/llvm-project/blob/main/LICENSE.TXT)\nor the [University of Illinois/NCSA Open Source License](https://github.com/TriDis/llvm-tricore/blob/tricore/LICENSE.TXT)\ndepending on the age of the fork. I believe both of these licenses are compatible with MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronc81%2Farcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faaronc81%2Farcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faaronc81%2Farcher/lists"}