各种高级语言虚拟机



RednaxelaFX 2010-01-06

关注各种高级语言虚拟机(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的动态即时编译器,非常非常强……

时间: 2024-10-04 03:44:08

各种高级语言虚拟机的相关文章

虚拟机字节码操作引擎-----基于栈的字节码解释引擎

虚拟机调用方法可以有解析和分派两种方式,那么虚拟机是如何执行方法中的字节码指令的? 1.解释执行   谈是解释执行还是翻译执行没有意义了,只有确定了某种具体的java实现版本和执行引擎运行模式时,谈解释执行还是编译执行才比较贴切. 如今,基于物理机.java虚拟机,或者非Java的其他高级语言虚拟机的语言,大多都会遵循这种基于现代经典编译原理的思路,在执行前先对程序源码进行词法分析和语法分析处理,把源码转化为抽象语法树 .对于一门具体语言的实现来说,词法分析.语法分析以致后面的优化器和目标代码生

java虚拟机和java内存区域概述

什么是虚拟机,什么是Java虚拟机 虚拟机 定义:模拟某种计算机体系结构,执行特定指令集的软件 系统虚拟机(Virtual Box.VMware),进程虚拟机 进程虚拟机 jvm.Adobe FlashPlayer.FC模拟器 高级语言虚拟机 JVM ..NET CLR.P-Code java语言虚拟机 可以执行Java语言的高级语言虚拟机.Java语言虚拟机并不一定就可以称为JVM,譬如: Apache Harmony JavaTM虚拟机 必须通过Java TCK(Technology Com

Java Hotspot G1 GC的一些关键技术

G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生.在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248).在官网中,是这样描述G1的: The Garbage-First (G1) collector is a server-style garbage collector, targeted for

计算机组成原理答疑--来源于南京大学课件

1.数据通路宽度.机器字长.“字”宽.存储单元宽度.编址单位.总线宽度.指令字长各指什么?它们之间有何关系? 答:在计算机内部,有指令和数据两大类信息.指令和数据都以二进制形式存放在存储器中,运行程序时,需要把指令和数据从存储器读出,通过总线传输到CPU,然后,CPU再通过执行指令来对操作数进行相应的运算,最后把结果数据送到寄存器或存储器中.所以,在设计或使用计算机过程中,要涉及到:指令和数据在存储器中按什么长度存放:写入或读出时按什么长度存取:在总线上传输时同时传送多少位:数据和指令送到CPU

计算机体系结构2次阅读

计算机体系结构 白中英编 我还是准备再读一遍,至少整理一下,所有书本的(关于实在的知识)是共同的,要看书的表述和你的的理解. 不用过度在意细节. 第一章 体系结构相关概念 1. 对计算机描述的一种方法是基于层次,具体的说基于操作的语言层次: L0,硬联逻辑层,逻辑设计员,逻辑电路: L1,微程序机器层,微程序设计员,微程序就是微指令的集合,一个机器指令往往就是一段微程序,当然也可以超出机器指令: L2,传统机器层,机器语言程序员,指令集:L3,操作系统虚拟机:L4,汇编语言虚拟机:L5高级语言虚

JVM学习笔记:JVM的体系结构与JVM的生命周期

1 JVM在java平台中的位置 1.1 Java平台组成 Java平台主要由Java虚拟机和Java API这两部分组成.参考Oracle官网. 1.2 java平台结构图 JDK1.2开始,迫于Java运行始终笔C++慢的压力,JVM的结构也慢慢发生了一些变化,JVM在某些场景下可以操作一定的硬件平台,一些核心的Java库甚至也可以操作底层的硬件平台,从而大大提升了Java的执行效率.JDK1.2之后的整个java平台如下图所示: 1.3 JVM与JRE.JDK的关系 参照Oracle官网的

字节码解释执行引擎

虚拟机是如何执行方法中的字节码指令的.许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,在解释执行时,虚拟机执行引擎是如何工作的. 解释执行 不论是解释还是编译,也不论是物理机还是虚拟机,对于应用程序,机器都不可能如人那样阅读.理解,然后就获得了执行能力.大部分的程序代码到物理机的目标代码或虚拟机能执行的指令集之前,都需要经过图中的各个步骤.很容易就会发现图中下面那条分支,就是传统编译原理中程序代码到目标机器代

虚拟化的层次与机制

最近几年随着并行计算.集群等技术的火热,虚拟机领域焕发了第二春.虚拟化就是指多台虚拟机共享一台物理机硬件的计算机体系结构技术.虚拟化的基本思想是分割软硬件以产生更好的系统性能(实际上,软硬件资源并没有增加,只是利用率提高了).一个例子就是常见的"虚拟内存",通过将一部分不用的磁盘写为页面文件,可以获得更大的内存地址空间,我们就可以跑更大的程序了. 1.  层次 我们都知道,传统方式是应用程序跑在操作系统上,而操作系统需要适应主机的特定体系结构,比如x86的机器上就只能跑win,linu

openjdk源码阅读导航

转自:http://rednaxelafx.iteye.com/blog/1549577 这是链接帖.主体内容都在各链接中. 怕放草稿箱里过会儿又坑掉了,总之先发出来再说…回头再慢慢补充内容. 先把ItEye网站上的信息聚合起来. 近期提问帖: 阅读openjdk源代码 如何来看OpenJDK源码 如何分析OpenJDK中JVM的实现 一个个回复太麻烦了,合在一块儿写这么一篇. ================ 前言 我的VM帖的索引 高级语言虚拟机(HLLVM)群组 新浪微群“JVM源码阅读活