losfair / losfair/hexagon

Hybrid Execution

Open
#3 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
5
Forks
0
PR merge metrics
No merged PRs in 30d

Description

With the current VM implementation based on a stack machine model, we are able to achieve high-level abstraction and dynamic typing, making the Hexagon VM a suitable platform for dynamic languages to run on.

However, the current execution model depends on heavy use of heap allocation, dynamic dispatch and managed library calls, limiting the performance and preventing the support of multi-threading.

Therefore, I decide to introduce a mechanism called Hybrid Execution, for building concurrent and high-performance applications on top of the VM.

Hybrid Execution consists of the original stack-based execution model and a new register-based model, with 16 general-purpose registers and a shared virtual linear memory.

Goals:

- [x] Virtual page table
- [x] Types: `Int8`, `Int16`, `Int32`, `Int64`, `Float64`
- [x] Virtual ISA
- [ ] Integrate with the stack-based VM

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the current stack-based VM and the completed virtual ISA, virtual page table, and type work. Determine how the register-based model should be integrated with the stack-based VM, then verify that both execution models work together and preserve the stated concurrency and performance goals.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.