Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lvntky/cvm
A toy JVM coded in C/C++
https://github.com/lvntky/cvm
c compiler java jvm jvm-renovate programming-language programming-languages system-programming virtual-machine
Last synced: 24 days ago
JSON representation
A toy JVM coded in C/C++
- Host: GitHub
- URL: https://github.com/lvntky/cvm
- Owner: lvntky
- License: mit
- Created: 2023-03-21T08:16:30.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-24T11:32:46.000Z (7 months ago)
- Last Synced: 2024-06-25T12:21:05.039Z (7 months ago)
- Topics: c, compiler, java, jvm, jvm-renovate, programming-language, programming-languages, system-programming, virtual-machine
- Language: C++
- Homepage:
- Size: 180 KB
- Stars: 15
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# CVM
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/lvntky/CVM)
![GitHub](https://img.shields.io/github/license/lvntky/cvm)
![GitHub issues](https://img.shields.io/github/issues/lvntky/cvm)
>**This is the second re-write of the CVM.**
>**The first implementation of the CVM has been made in C which can be reachable at [cvm/archive](https://github.com/lvntky/CVM/tree/archive) for archive purposes Since the first implementation does not work as intended**
>**The master branch is the current and active version of the CVM which is rewrite in C++**
A toy Java Virtual Machine coded in C(and C++). CVM is a simple and lightweight JVM that aims to provide a basic understanding of JVM internals and bytecode execution. This project serves as an educational and fun resource for those interested in learning about JVM implementation details.
## Features
- Implementation of a minimalistic JVM in C
- Support for executing Java bytecode
- Basic class loading and method execution
- Instruction set interpretation## Getting Started
Follow these steps to get started with CVM:
1. **Clone the Repository:**
```bash
git clone https://github.com/lvntky/CVM.git
cd CVM
```
2. **Compile the Source Code:**```bash
mkdir build
make install
```
3. **Run a Java Program:**```bash
./cvm JavaProgram.class
```## Usage
CVM accepts a Java class file as a command-line argument. It loads and executes the main method of the specified class.
Example:
```bash
./cvm HelloWorld.class
```## Contributing
We welcome contributions to CVM. If you want to add new features, fix bugs, or improve documentation, please follow these steps:
1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Make your changes and commit them.
4. Open a pull request explaining your changes.## License
CVM is licensed under the MIT License. See the LICENSE file for details.
## Acknowledgments
CVM was inspired by a passion for JVM internals and bytecode execution. I would like to thank the Java community for providing valuable resources and documentation on JVM internals.
- [Oracle's JVM Specification](https://docs.oracle.com/javase/specs/jvms/se8/html/)
## Contact
If you have questions or need assistance with CVM, feel free to contact me at [email protected] .
Happy coding! 🚀