https://github.com/robotane/bcterm
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.
https://github.com/robotane/bcterm
bytecode bytecode-interpreter bytecode-manipulation jvm termination verification
Last synced: 4 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/robotane/bcterm
- Owner: robotane
- Created: 2025-04-04T10:09:10.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-04-07T12:22:55.000Z (10 months ago)
- Last Synced: 2025-04-09T21:12:18.679Z (10 months ago)
- Topics: bytecode, bytecode-interpreter, bytecode-manipulation, jvm, termination, verification
- Language: Java
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BCTerm
A 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.
## Features
- Basic JVM state modeling (stack, locals, heap)
- Object allocation and reference tracking
- Support for basic bytecode instructions
- Basic program structure representation with CFG (Control Flow Graph)
- Support for analyses:
- Pair-sharing analysis
- Memory graph generation
## Getting Started
### Prerequisites
- Java 8 or higher
- Maven for building the project
### Building the Project
```bash
mvn clean install
```
### Usage
Not yet implemented.
```bash
java -jar bcterm.jar
```
## Project Structure
- `src/main/java/fr/univreunion/bcterm/jvm/state/` - Core JVM state representation (Integer, Location, Null values, Objects)
- `src/main/java/fr/univreunion/bcterm/jvm/instruction/` - Supported bytecode instructions:
- Stack Operations (Load, Store, Dup, Const)
- Arithmetic Operations (Add)
- Object Operations (New, GetField, PutField)
- Control Flow (IfEqOfType, IfNeOfType)
- Method Operations (Call)
- `src/main/java/fr/univreunion/bcterm/program/` - Program structure representation (BasicBlock, CFG, Method, Program)
- `src/main/java/fr/univreunion/bcterm/analysis/` - Analysis implementations:
- `sharing/` - Pair-sharing analysis
- `graph/` - Memory graph generation
## Contributors
- BAYE Serge Olivier (also known as [John ROBOTANE](https://github.com/robotane))
- Université de La Réunion