{"id":27101321,"url":"https://github.com/robotane/bcterm","last_synced_at":"2025-10-12T11:32:16.300Z","repository":{"id":286103893,"uuid":"960367993","full_name":"robotane/BCTerm","owner":"robotane","description":"BCTerm is a formal Java bytecode interpreter that models the JVM execution environment with precise tracking of states during bytecode execution. Designed for program verification, bytecode semantics analysis, and termination proof validation.","archived":false,"fork":false,"pushed_at":"2025-04-07T12:22:55.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T21:12:18.679Z","etag":null,"topics":["bytecode","bytecode-interpreter","bytecode-manipulation","jvm","termination","verification"],"latest_commit_sha":null,"homepage":"","language":"Java","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/robotane.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":"2025-04-04T10:09:10.000Z","updated_at":"2025-04-07T12:22:58.000Z","dependencies_parsed_at":"2025-04-09T21:12:18.605Z","dependency_job_id":null,"html_url":"https://github.com/robotane/BCTerm","commit_stats":null,"previous_names":["robotane/bcterm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotane%2FBCTerm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotane%2FBCTerm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotane%2FBCTerm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robotane%2FBCTerm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robotane","download_url":"https://codeload.github.com/robotane/BCTerm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248111974,"owners_count":21049578,"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":["bytecode","bytecode-interpreter","bytecode-manipulation","jvm","termination","verification"],"created_at":"2025-04-06T14:18:24.048Z","updated_at":"2025-10-12T11:32:16.288Z","avatar_url":"https://github.com/robotane.png","language":"Java","readme":"# BCTerm\n\nA formal Java bytecode analyzer that models the JVM execution environment for static analysis. BCTerm simulates how bytecode instructions affect the stack, local variables, and heap without actually running the program, enabling bytecode semantics analysis and termination proof validation.\n\n## Features\n\n- Basic JVM state modeling (stack, locals, heap)\n- Object allocation and reference tracking\n- Support for basic bytecode instructions\n- Basic program structure representation with CFG (Control Flow Graph)\n- Support for analyses:\n  - Pair-sharing analysis\n  - Memory graph generation\n\n## Getting Started\n\n### Prerequisites\n\n- Java 8 or higher\n- Maven for building the project\n\n### Building the Project\n\n```bash\nmvn clean install\n```\n\n### Usage\n\nNot yet implemented.\n\n```bash\njava -jar bcterm.jar \u003cpath-to-class-file\u003e\n```\n\n## Project Structure\n\n- `src/main/java/fr/univreunion/bcterm/jvm/state/` - Core JVM state representation (Integer, Location, Null values, Objects)\n- `src/main/java/fr/univreunion/bcterm/jvm/instruction/` - Supported bytecode instructions:\n  - Stack Operations (Load, Store, Dup, Const)\n  - Arithmetic Operations (Add)\n  - Object Operations (New, GetField, PutField)\n  - Control Flow (IfEqOfType, IfNeOfType)\n  - Method Operations (Call)\n- `src/main/java/fr/univreunion/bcterm/program/` - Program structure representation (BasicBlock, CFG, Method, Program)\n- `src/main/java/fr/univreunion/bcterm/analysis/` - Analysis implementations:\n  - `sharing/` - Pair-sharing analysis\n  - `graph/` - Memory graph generation\n\n## Contributors\n\n- BAYE Serge Olivier (also known as [John ROBOTANE](https://github.com/robotane))\n- Université de La Réunion\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotane%2Fbcterm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobotane%2Fbcterm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotane%2Fbcterm/lists"}