高级语言虚拟机(HLL VM)的设计与实现

关注各类高级语言虚拟机(high-level language virtual machine,HLL VM)的设计与实现,泛化至各类高级语言的运行时的设计与实现,也会涉及动态编译、GC、动态语言的编译等话题。总之大方向是高级语言的语义的实现方式就 对了 >_<
我会开一些帖子做为资料堆积用,例如书籍、论文、教程、文章及相关连接收集。请不要以讨论方式回复这些资料堆积帖,以便于保持资料的“整洁”;不过能够另外开对应的讨论帖放讨论。
也欢迎你们开讨论帖对HLL VM的话题热烈讨论。请你们告诉我大家都对HLL VM的什么方面感兴趣 ^_^
也能够发娱乐帖,各类稀奇古怪的与HLL VM相关的代码之类的能够放在这个分类下。
须要圈子管理员权限的同窗请PM我,有兴趣帮我一块儿收集和整理HLL VM相关资料那是最好不过了。

讨论范围包括但不限于:
Java Virtual Machine
- Oracle(Sun) HotSpot VM ( OpenJDK: GPLv2+CE)
-- Da Vinci Machine
-- JSR 292 Backport
-- UltraViolet™ Virtual Machine
- Azul HotSpot VM
- IBM J9
- Oracle JRockit
- Apache Harmony (Apache License v2)
- Jikes RVM (EPLv1)
- Kaffe (GPL)
- SableVM (LGPLv2.1)
- Oracle(Sun) CLDC HotSpot Implementation (GPLv2)
  - Oracle(Sun) Project Monty virtual machine
  - PSPKVM (GPL)
- Oracle(Sun) Squawk VM (GPLv2)
- Oracle(Sun) JavaCard VM
- Oracle(Sun) Maxine VM (GPLv2)
- Oracle(Sun) Mackinac
- Metacircular Research Platform (MRP) (Apache License, EPLv1, GPLv2+CE)
- Moxie JVM (Apache License v2)
- JamVM (GPL) ( Sourceforge Project Page)
- JamaicaVM
- cacaovm (GPL)
- Jelatine JVM (GPLv3)
- NanoVM (GPL)
- Open Mika (BSD)
- Wonka VM
- Aegis VM (LGPL)
- joeq (GPL)
- kissme (GPL)
- VMKit (University of Illinois Open Source License)
- Jupiter
- K virtual machine
- NSIcom CrE-ME
- LaTTe (BSD)
- Esmertec JBed
- Symantec JIT
- TowerJ DynaFlex
- Microsoft Java Virtual Machine / jview
- HP Chai VM
- Oracle OJVM
- Oracle JVM (考据中,不知道这个跟OJVM是什么关系)
- Mozilla ElectricalFire (Netscape PL)
- MachJ
- JanosVM
- Xam (GPLv3)
- E-bunny
- Jeode EVM
- shuJIT
- Inprise "javacomp" JIT
- OpenJIT (BSD)
- TYA
- Open Runtime Platform (ORP) (Intel Open Source License)
- Jaos
- AromaVM
- Sun Exact VM
- Sun JavaInJava
- IKVM.NET (custom BSD-like)
- TinyVM (MPLv1)
- Ovm (简介) (New BSD)
- GCJ (GPL)
- Excelsior JET
- RoboVM ( license)
- JC Virtual Machine (LGPL)
- MiniJavaVM
- ArmJVM
- Rava (Ruby License)
- RUVA (Ruby License)
- Japhar
- Joker-vm (GPL)
- Jato (GPLv2+LE)
- Hornet (BSD)
- Another Open JavaCard Virtual Machine (GPL)
- Sun Spotless JVM
- Nemesis JVM
- nanokit
- Aplix JBlend
- Orto JVM
- Avian (ISC License) Github连接
- JnJVM
- Doppio (MIT License) Java on CoffeeScript
- Mysaifu JVM
- node-jvm
- Fiji
http://rtjava.blogspot.com/2011/07/fijivm-real-time-java-vm-overview.html

Google Dalvik VM (Apache License v2)

NestedVM (Apache License v2)

Harissa

DynamicJava (BSD)
这是个Java实现的Java源码解释器,而不是JVM规范定义的那类JVM

FIJI ForthIsh Java Interpreter (GPL)

Eve Virtual Machine

Parrot VM (Artistic License 2.0)

Common Language Infrastructure (CLI)
- Common Language Runtime (CLR) (.NET Framework) open sourcing!
- .NET Compact Framework
- .NET Micro Framework (Apache License v2)
- Mono (LGPL/GPL/X11)
- DotGNU Portable .NET (GPL)
- Shared Source Common Language Infrastructure (SSCLI) (Microsoft Shared Source Common Language Infrastructure license)
- Open Runtime Platform (ORP) (Intel Open Source License)
- StarJIT
- ILDJIT (GPL)

Dynamic Language Runtime (DLR) (Ms-PL)

Dis Virtual Machine

●Python
- Python (CPython) (PSFL)
- PyPy (MIT)
- Pyston (Apache License v2)
- Jython (PSFLv2)
- IronPython (Ms-PL)
- Unladen Swallow (Apache License v2)
- Pynie
- Psyco (MIT)
- Stackless Python (PSFL)
- tinypy (MIT)
- python-on-a-chip (p14p) (GPLv2)

●Ruby
- Ruby 1.8.x (MRI) (Ruby License)
- Ruby 1.9 ( YARV) (Ruby License)
- Rubinius (BSD)
- MacRuby (Ruby License)
- JRuby (CPL/GPL/LGPL)
- IronRuby (Ms-PL)
- MagLev (MIT)
- Ruby Enterprise Edition
- BlueRuby
- The Ludicrous JIT Compiler (BSD)
- XRuby (Apache License v2)
- Cardinal
- Ruby.NET (new BSD)
- HotRuby (Ruby License)
- tinyrb (Ruby License)
- mirc

●JavaScript
- Google V8 (new BSD)
- Mozilla JägerMonkey/ TraceMonkey/ Tamarin/ SpiderMonkey (MPL 1.1/GPL 2.0/LGPL 2.1)
- Apple Nitro (SquirrelFish Extreme)/ SquirrelFish/ JavaScriptCore (LGPL)
- KDE KJS (LGPLv2)
- Opera Carakan
- DMDScript
- Managed JScript
- JScript
- JScript 9 "Chakra"
- Narcissus
- BESEN (OwnLicense+AGPLv3)
- Jurassic (Ms-PL)
- IronJS (Apache License v2)
- lv5
- Tachyon
- Ejscript ( Embedthis Open Source Software License)
- Qt v4
- MuscalietJS (mcjs): An Extensible Portable Layered JavaScript Engine

●ActionScript 3
- Adobe AVM2
- Lightspark
- JITB

Groovy (BSD)

●Perl
- Perl
- Pugs
- Rakudo
- MoarVM (Rakudo的新VM)
- Tycho (by Matthew Wilson)

●PHP
- PHP (PHP License v3.01)
- HipHop VM (PHP and Zend License)
- HippyVM ( Github)(MIT License)
- Phalanger (SS-PL)
- Zend
- Quercus

Smalltalk
- Smalltalk
- GNU Smalltalk (GPL)
- Squeak (SqL) http://www.squeakvm.org/index.html
- GemStone/S
- Pharo (MIT/Apache Lisence)
- Strongtalk (new BSD)
- Cog (MIT License)
- Jtalk (MIT License)

Self
- Self
- Klein Metacircular Virtual Machine Kit

Newspeak (Apache License v2/SqL/MIT)

Erlang (MPL)
- BEAM
- Erjang

●Prolog

Mercury

Pure

●BASIC

●COBOL

Factor (BSD)

●Neko
- Neko VM (LGPL)

Potion (MIT)

Forth

●Scheme
- Ikarus (GPLv3)
- WeScheme

●Common Lisp

HLVM (BSD)

Ela

SQLite Virtual Database Engine

被称为“编译型语言”的解释器实现:

●C
- Ch

●C++
- Cint

嗯…… HaskellOCaml之类的语言也是有解释器实现的,也算在内。
说来OCaml的解释器是direct-threaded的,这个确定得拿来讲说。在Forth社区之外确实讨论各类threaded技巧的氛围不怎么浓。

还有些有趣的语言也是用解释器实现的。 Fortress也有 解释器,有机会也要拿来挖掘挖掘。

经常使用做嵌入式脚本的:

●Lua
- Lua (MIT)
- LuaJIT (MIT/X)

Terra
http://terralang.org

Squirrel (zlib/libpng)

AngelScript (zlib)

JewelScript (zlib/libpng)

Monster Script

一些游戏引擎里的脚本引擎:

吉里吉里2
- TJS2 (GPLv2)

吉里吉里3
- Risse

●RealLive
- RealLive
- rlvm (GPLv3)
- xclannad

●AliceSoft
- System 3.x
- System 4.x

●NScripter
- NScripter
- ONScripter

YU-RIS

Hot Soup Processor (HSP)

●Stuff スクリプトエンジン

Wintermute Engine (WME)

Unreal
- UnrealScript

Torque Game Engine
- TorqueScript

Z Machine

有些EL(表达式语言,expression language)的实现也能够拿来讨论:

MVEL

janino (New BSD)

Unified Expression Language (JSR 245)
- JUEL
- Resin EL

●JSP 2.0 EL
- Commons EL

JEXL
●JEval
●SpEL
●OGNL

●IK Expression
Aviator
JSEL

一些模板引擎里其实也有树遍历式的解释器

Velocity (Apache License v2)

虽然自身不是HLL VM,但常常被用于HLL VM实现的:

Low Level Virtual Machine (LLVM) (University of Illinois Open Source License)
- llvm-py

年代久远的虚拟机:

●SECD

动态编译的先驱:

●Oberon

还有像Half-Life 2的SourceMod插件里也有JIT…SourcePawn?
看这里 http://www.bailopan.net/blog/?p=73

各类机器像是游戏机的模拟器里天然也有高效的编译器或者说binary translator的实现
Dolphin Emulator

一些JIT库:

Xbyak (BSD)

asmjit (MIT)

jitasm (BSD)

libjit (LGPLv2.1)
- libjit-linear-scan-register-allocator (LGPL)

一些GC库:

Boehm GC

Qish (LGPL)

生成解释器的工具:

Vmgen

Generic Interpreter

下面这个有点离题,但很是强悍:

Valgrind 虽然被许多人认为是内存访问的检查工具,但其实是x86-to-x86的动态即时编译器,很是很是强……
相关文章
相关标签/搜索