{"id":20786162,"url":"https://github.com/russross/risclet","last_synced_at":"2026-01-27T20:19:53.591Z","repository":{"id":241420297,"uuid":"806789025","full_name":"russross/risclet","owner":"russross","description":"Simulation environment for teaching RISC-V assembly language (rv64imc)","archived":false,"fork":false,"pushed_at":"2025-05-10T21:34:14.000Z","size":253,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-10T22:26:39.011Z","etag":null,"topics":["assembly-language-programming","debugger","riscv64"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/russross.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}},"created_at":"2024-05-27T22:55:59.000Z","updated_at":"2025-05-10T21:34:18.000Z","dependencies_parsed_at":"2025-02-28T23:58:18.775Z","dependency_job_id":"c43d4176-b008-42ff-a64c-2eeb4fad6e34","html_url":"https://github.com/russross/risclet","commit_stats":null,"previous_names":["russross/rv64sim","russross/riscfree","russross/lowrisc","russross/risclet"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russross%2Frisclet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russross%2Frisclet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russross%2Frisclet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/russross%2Frisclet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/russross","download_url":"https://codeload.github.com/russross/risclet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253567778,"owners_count":21928896,"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-language-programming","debugger","riscv64"],"created_at":"2024-11-17T14:51:00.212Z","updated_at":"2026-01-27T20:19:53.550Z","avatar_url":"https://github.com/russross.png","language":"Assembly","readme":"risclet\n=======\n\nThis is a lightweight RISC-V disassembler, simulator, and linter for\nstudents learning assembly language. By design it has few controls\nand limited functionality, with simplicity and approachability as\noverriding goals.\n\nIn its default mode, risclet does the following:\n\n*   Loads `a.out` and disassembles it as an rv64imc binary\n*   Simulates the complete execution of the program\n*   Performs some strict ABI checks, especially around register\n    calling convensions. Any violation is flagged as a fatal error.\n*   Traces and records the effects of each instruction\n*   Launches a TUI (80×24 or larger terminal recommended) that\n    allows simple stepping and jumping forward and backward through\n    the program, while displaying:\n    *   The disassembled source\n    *   The register file\n    *   Any program output/input (stdout and stdin only)\n    *   The stack\n    *   The data segment\n*   The TUI also:\n    *   Shows the net effect the next instruction to run will have\n    *   For taken branches, draws a line to the branch target\n    *   Highlights each stack frame\n    *   Highlights the most recent memory access\n    *   Highlights each labeled data segment chunk\n\nThe controls are minimal and can be displayed by hitting `?`:\n\n*   Scroll the cursor through the source using Up, Down, PgUp, and PgDown\n*   Step forward/backward using Right, Left\n*   Jump to beginning/end of current function using Home, End\n*   Jump forward/backward to current cursor position using Enter, Backspace\n*   Various toggles to control what is displayed\n\nrisclet is intended for students learning the basics of assembly\nlanguage, and is especially for anyone who has been intimidated by\nstandard debugging tools.\n\n\nFeatures\n--------\n\n*   Support for the full RV64imc instruction set\n*   Checks for proper register use according to the ABI, and\n    emphasizing simple function structure and stack usage\n*   Minimal controls, no breakpoints or watch expressions\n*   Lightweight navigation that makes it quick and easy to move to\n    different execution points in the program\n*   Emulates a tiny set of system calls:\n    *   write to stdout\n    *   read from stdin\n    *   exit\n*   Runs the entire program first, then launches the TUI, so\n    lightly-interactive programs are easy to work with\n*   Portable with only a single crate dependency (crossterm for the\n    TUI)\n\n\nContributors\n------------\n\nThis tool is made for students learning the basics of assembly\nlanguage and is designed for small programs written by hand. Minimal\nfeatures and especially simple controls are explicit goals. With\nthat in mind, I will be reluctant to accept pull requests and\nfeature requests if they work against those goals. Bug reports and\nfixes are welcome.\n\n*   Russ Ross (github.com/russross)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frussross%2Frisclet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frussross%2Frisclet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frussross%2Frisclet/lists"}