Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A register-based virtual machine for a basic Lisp

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 Makefile
Octocat-spinner-32 README
Octocat-spinner-32 compiler.js
Octocat-spinner-32 compiler.ol
Octocat-spinner-32 machine.js
Octocat-spinner-32 machine.ol
Octocat-spinner-32 machinejs.js
Octocat-spinner-32 vm.js
Octocat-spinner-32 vm.ol
Octocat-spinner-32 web-loadable.js
Octocat-spinner-32 web.js
Octocat-spinner-32 web.ol
README
This is a register-based virtual machine that runs a subset of Lisp.
It supports the basic forms like `lambda`, `define`, `set!`, `if`,
etc.

Needs Outlet to run: https://github.com/jlongster/outlet

Code is compiled to a special assembly language that the virtual
machine assembles and runs.

For example:

    (define a 3)

is compiled to:

    ((assign val (const 3))
     (perform
      (op define-variable!)
      (const a)
      (reg val)
      (reg env))
     (assign val (const ok)))

This is an experiment to see if this is capable of running Outlet
(https://github.com/jlongster/outlet) code at acceptable speeds. If
so, this has great potential as a debugger.
Something went wrong with that request. Please try again.