高級語言虛擬機(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的動態即時編譯器,很是很是強……
相關文章
相關標籤/搜索