{"id":24864295,"url":"https://github.com/i3abghany/vemu","last_synced_at":"2025-07-31T14:16:34.908Z","repository":{"id":119012243,"uuid":"335424371","full_name":"i3abghany/vemu","owner":"i3abghany","description":"High performance fuzzing through RISC-V 64-bit emulation","archived":false,"fork":false,"pushed_at":"2023-08-19T21:34:39.000Z","size":810,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-31T09:43:02.279Z","etag":null,"topics":["emulator","fuzzing","risc-v"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/i3abghany.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-02-02T21:11:35.000Z","updated_at":"2023-06-08T02:18:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"25e7b926-f578-49ab-80e4-0971335b35b7","html_url":"https://github.com/i3abghany/vemu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/i3abghany/vemu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i3abghany%2Fvemu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i3abghany%2Fvemu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i3abghany%2Fvemu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i3abghany%2Fvemu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/i3abghany","download_url":"https://codeload.github.com/i3abghany/vemu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/i3abghany%2Fvemu/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268054432,"owners_count":24188215,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"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":["emulator","fuzzing","risc-v"],"created_at":"2025-01-31T23:51:36.376Z","updated_at":"2025-07-31T14:16:34.879Z","avatar_url":"https://github.com/i3abghany.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vemu\n\nA toy emulator for the RISC-V ISA.  \nCurrently supports: RV64IMA full user-space emulation.\nPartially supports: The F extension, the previliged ISA specification, and the\nNewlib Linux syscall subset.\n\nThe emulator uses the Berkeley SoftFloat (release 3e) to carry out floating\npoint operations. The source of the library is included in the `vendor`\ndirectory. The static library is prebuilt for only Windows for now.\n\n## Building\n\nvemu uses CMake, I prefer to use Ninja as a generator but a Makefile can be\ngenerated by omitting the `-G Ninja` part from invoking CMake.\n\nThe fuzz target expects a corpus path along with the command line of the program\nto fuzz.\n\nFuzzing targets have to be compiled against newlib. For now vemu generates a\nsingle, deterministic, random input. Threading infrastructure is still WIP.\n\n```\nmkdir build \u0026\u0026 cd build\ncmake ../ -G Ninja\nninja fuzz_emu\n./fuzz_emu /path/to/binary/corpus TARGET [OPTIONS...]\n```\n\nThe fuzzing input can be indicated by the `{}` option. As an example, to fuzz\nobjdump, a possible command line for vemu is as follows.\n\n```\n./fuzz_emu ./input_corpus/ objdump -x {}\n```\n\n## Testing\n\nA subset of the RISC-V test suite is used to test vemu, a testing target can be\nbuilt and run against the available tests using the following commands, after\ngenerating the ninja build files:\n\n```\nninja test_emu\n./test_emu\n```\n\nThe test suite is organized in a manner such that in each test, an `ECALL`\ninstruction is invoked whether the test passed or not. A pass/fail indicator\nvalue is set in a register that we could check to see whether all tests have\npassed or not.  The testing target interposes `ECALL` instructions to do so.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fi3abghany%2Fvemu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fi3abghany%2Fvemu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fi3abghany%2Fvemu/lists"}