Skip to content

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.

Notifications You must be signed in to change notification settings

robotane/BCTerm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

mvn clean install

Usage

Not yet implemented.

java -jar bcterm.jar <path-to-class-file>

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)
  • Université de La Réunion

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages