https://github.com/maxxsoft/sigma-vm
Sigma Virtual Machine.
https://github.com/maxxsoft/sigma-vm
bytecode compiler programming-language virtual-machine
Last synced: 9 months ago
JSON representation
Sigma Virtual Machine.
- Host: GitHub
- URL: https://github.com/maxxsoft/sigma-vm
- Owner: MaxXSoft
- License: apache-2.0
- Created: 2023-08-03T08:00:06.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-01-03T07:38:02.000Z (about 2 years ago)
- Last Synced: 2025-04-18T21:01:41.971Z (9 months ago)
- Topics: bytecode, compiler, programming-language, virtual-machine
- Language: Rust
- Homepage:
- Size: 874 KB
- Stars: 21
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Sigma Virtual Machine
Sigma Virtual Machine (Sigma VM) is a kind of high-level language virtual machine (HLLVM) that can provide a runtime environment for various of guest programming languages.
## Supported Features
Sigma VM supports the following features:
* Basic operations like arithmetic, control flow actions, etc.
* Global variables and global initializer.
* **Tracing garbage collector** (will stop the world for now).
* **Object destructor**, called when an object needs to be collected.
* **Module loader and inter-module call support**, support for loading modules from files or memory. All loaded modules are managed by the GC, and can be unloaded automatically.
* **System calls**, support a variety of standard system calls, and provide interface for user-defined system calls in the VM library.
* **Native call**, support for loading shared libraries and calling functions from them (based on C FFI). All loaded libraries are managed by the GC, and can be closed automatically.
* **VM library**, including the VM itself, and interfaces for compiler front-ends used to parse and generate bytecode.
## Usage of the VM Library
Sigma VM is written in Rust, so it provides Rust crate `sigma_vm` for interacting with the virtual machine.
For now, the `sigma_vm` crate has not been uploaded to the [crates.io](https://crates.io), you can read the documentation generated by `rustdoc`:
```
cargo doc --lib sigma_vm --open
```
## VM Utilities
There are many utilities for the Sigma VM in this repository:
* [`sigma`](sigma): driver/front-end of the Sigma VM, provides command line interface for running bytecode files.
* [`sbas`](sbas): Sigma VM bytecode assembler, can generate bytecode files from assembly files.
* [`sbdump`](sbdump): Sigma VM bytecode dumper, can display disassembly information from bytecode file.
When running the above program, you can use the command line option `--help` for usage, for example:
```
cargo run --bin sigma -- --help
```
## Examples
There are also examples that demonstrate the capabilities of Sigma VM:
* [`lisp`](lisp): a [Lisp](https://en.wikipedia.org/wiki/Lisp_(programming_language)) compiler that generates Sigma VM bytecode.
For more information, see the README in the examples directory.
## Copyright and License
Copyright (C) 2023 MaxXing. Licensed under either of Apache 2.0 or MIT at your option.