文档章节

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

银月光海
 银月光海
发布于 2016/01/06 10:17
字数 1377
阅读 235
收藏 3
关注各种高级语言虚拟机(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的动态即时编译器,非常非常强……

本文转载自:http://hllvm.group.iteye.com/group/topic/17147

银月光海

银月光海

粉丝 37
博文 365
码字总数 46223
作品 0
浦东
项目经理
私信 提问
语法解析器!

举例:将i = a + b * c作为源代码输入到解析器里,则广义上的解析器的工作流程如下图: acc -= 3; iconst_2iaddistore_0 add eax, 2 } // a[0]aload_1iconst_0 // 右子树:加法// aiload_2//...

付翔
2014/12/08
0
0
解释性语言和编译性语言的区别

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻...

xuhaowei
2016/08/22
95
0
什么是编译性语言、解释性语言和脚本语言

什么是编译性语言、解释性语言和脚本语言   计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能值型高级语言编写的程序。  翻译的方式有...

AlphaJay
2010/08/18
0
0
基于虚拟机的软件保护技术

本文并不打算对vmprotect或其它某款软件安全套件进行深入讨论,而着眼于研究基于虚拟机的软件保护技术的起源、思想和实现。 现有软件保护技术概述 传统的软件保护技术,根据针对对象不同,可...

linuxprobe
2016/07/18
12
0
Tintri Analytics可否通过机器学习挽回存储失去的青春?

大家知道,VMware推出vVol虚拟机感知存储功能主要有两个目的,一是构建其在Hypervisor领域的影响力和庞大生态体系,另一个更重要的目的是解决传统存储的LUN、Volume、Tier对于虚拟机无法联动...

btb5e6nsu1g511eg5xeg
2017/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

FPGA 设备 USB Platform Cable USB

lsusbFuture Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

MtrS
今天
4
0
lua web快速开发指南(6) - Cache、DB介绍

"数据库"与"缓存"的基本概念 数据库与缓存是服务端开发人员的必学知识点. 数据库 "数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数...

水果糖的小铺子
今天
9
0
Oracle分页查询语句的写法

Oracle分页查询语句的写法 Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,Oracle分页查询语句基本上可以按本文给出的格式来进行套用。   Oracle分...

康师傅
昨天
5
0
java并发图谱

1527
昨天
2
0
Mybatis之拦截器Interceptor

使用mybatis时用PageHelper进行分页,用到了PageInterceptor,借此了解下mybatis的interceptor。Mybatis的版本是3.4.6,MybatisHelper的版本是5.1.3。 1、PageInterceptor 先上一段代码,如下...

克虏伯
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部