- 浏览: 3047898 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
在我以前的一篇blog,LINQ与DLR的Expression tree(3):LINQ与DLR及另外两个库的AST对比里,我提到了Common Compiler Infrastructure(CCI)源自Project 7,用于为.NET平台提供一套实现编程语言用的公共基础设施。这套基础设施不但也用与编译器编写,也可用于代码分析、代码优化、代码生成等多种功能。FxCop就一直依赖于CCI来提供PE文件解析和写入的相关功能。Visual Studio中的代码分析功能也是基于CCI的特化版。.NET 4的Code Contract也在使用CCI……
2天前,这套类库终于公开发布了,而且是基于Ms-PL许可证开源发布了。此刻我难以压抑激动的心情。
CCI是在微软研究院的Redmond的研究所的支持下,由Herman Venter宣布开源的。
目前发布了的CCI包括三部分,都是以source-only的方式发布的:
CCI on CodePlex:
Common Compiler Infrastructure: Metadata components
这部分提供了对PE文件及其中的元数据的操作,包括PE文件的读、写、遍历、转换等功能,也提供了一些反编译到源码的支持;同时它还包括对PDB文件的读、写功能。
使用过Mono.Cecil的同学可以考虑看看CCI对Metadata的支持是否能更好的满足需要。
Common Compiler Infrastructure: Code and AST Components
这部分提供了连接编译器前端与后端的桥梁,也就是对AST的支持。CCI包含了大量AST节点类型,可以支持大部分程序语言中设计的语法结构的语义。在编译器前端生成了合适的AST之后,CCI提供了后端支持将AST编译为IL,免除了编译器编写的一大痛苦。
这部分可用于替代CodeDOM原本的地位。
Common Compiler Infrastructure: Sample applications
这部分包含了一些使用CCI的例子,目前有一个Small Basic编译器。日后还会不断有新的例子加入。
其中CCI的主要文档都在CCI-AST的那个部分的Documentation目录里。
值得一提的是,CCI并不提供编译器前端的功能,也就是说词法分析器和文法分析器都不在CCI的功能范围内。但现成的解析器生成器非常多,随便挑一款与CCI配合都没问题。如果是像ANTLR一类有自己的AST类层次的库,可以在前端生成了AST后转换为CCI的AST,这样就能与CCI其余的部分联系上了。
相关链接:
Channel 9上关于CCI开源的访谈(3:33)
Research in Software Engineering Group based in the Microsoft Research Redmond Laboratory(RiSE)
Cecil and the CCI Jb Evain对Cecil和CCI的评论
P.S. 以前Colin老大问过CCI的获取方式和使用许可,当时我回复说只能从FxCop或者Zonnon获取CCI相关的程序集,但FxCop的许可里指明了其附带的CCI不得用于FxCop以外的用途,所以当时觉得很无奈。现在这玩意儿终于开源了啊 T T
呵呵,我也是正好看到老大今天发帖了,顺便过去踩踩。
老大最近在忙些啥?有机会用上CCI不?
CCI刚发布,从source history来看似乎在发布前commit得非常频繁,或许过那么一两个星期再去抓档会比现在稳定些。不过文档是可以先抓来读读的,在CCI-AST里。
2天前,这套类库终于公开发布了,而且是基于Ms-PL许可证开源发布了。此刻我难以压抑激动的心情。
CCI是在微软研究院的Redmond的研究所的支持下,由Herman Venter宣布开源的。
目前发布了的CCI包括三部分,都是以source-only的方式发布的:
CCI on CodePlex:
Common Compiler Infrastructure: Metadata components
这部分提供了对PE文件及其中的元数据的操作,包括PE文件的读、写、遍历、转换等功能,也提供了一些反编译到源码的支持;同时它还包括对PDB文件的读、写功能。
使用过Mono.Cecil的同学可以考虑看看CCI对Metadata的支持是否能更好的满足需要。
Common Compiler Infrastructure: Code and AST Components
这部分提供了连接编译器前端与后端的桥梁,也就是对AST的支持。CCI包含了大量AST节点类型,可以支持大部分程序语言中设计的语法结构的语义。在编译器前端生成了合适的AST之后,CCI提供了后端支持将AST编译为IL,免除了编译器编写的一大痛苦。
这部分可用于替代CodeDOM原本的地位。
Common Compiler Infrastructure: Sample applications
这部分包含了一些使用CCI的例子,目前有一个Small Basic编译器。日后还会不断有新的例子加入。
其中CCI的主要文档都在CCI-AST的那个部分的Documentation目录里。
值得一提的是,CCI并不提供编译器前端的功能,也就是说词法分析器和文法分析器都不在CCI的功能范围内。但现成的解析器生成器非常多,随便挑一款与CCI配合都没问题。如果是像ANTLR一类有自己的AST类层次的库,可以在前端生成了AST后转换为CCI的AST,这样就能与CCI其余的部分联系上了。
相关链接:
Channel 9上关于CCI开源的访谈(3:33)
Research in Software Engineering Group based in the Microsoft Research Redmond Laboratory(RiSE)
Cecil and the CCI Jb Evain对Cecil和CCI的评论
P.S. 以前Colin老大问过CCI的获取方式和使用许可,当时我回复说只能从FxCop或者Zonnon获取CCI相关的程序集,但FxCop的许可里指明了其附带的CCI不得用于FxCop以外的用途,所以当时觉得很无奈。现在这玩意儿终于开源了啊 T T
评论
2 楼
RednaxelaFX
2009-04-16
cajon 写道
哈哈哈哈,好啊,好啊,不用你通知,我也会来Happy Happy的。RSS是好东西啊。
呵呵,我也是正好看到老大今天发帖了,顺便过去踩踩。
老大最近在忙些啥?有机会用上CCI不?
CCI刚发布,从source history来看似乎在发布前commit得非常频繁,或许过那么一两个星期再去抓档会比现在稳定些。不过文档是可以先抓来读读的,在CCI-AST里。
1 楼
cajon
2009-04-16
哈哈哈哈,好啊,好啊,不用你通知,我也会来Happy Happy的。RSS是好东西啊。
发表评论
-
Sun JDK1.4.2_28有TieredCompilation
2014-05-12 08:48 0原来以前Sun的JDK 1.4.2 update 28就已经有 ... -
IBM JVM notes (2014 ver)
2014-05-11 07:16 0Sovereign JIT http://publib.bou ... -
HotSpot Server Compiler与data-flow analysis
2014-01-07 17:41 0http://en.wikipedia.org/wiki/Da ... -
基于LLVM实现VM的JIT的一些痛点
2014-01-07 17:25 0同事Philip Reames Sanjoy Das http ... -
《自制编程语言》的一些笔记
2013-11-24 00:20 0http://kmaebashi.com/programmer ... -
对C语义的for循环的基本代码生成模式
2013-10-19 23:12 21871之前有同学在做龙书(第二版)题目,做到8.4的练习,跟我对答案 ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
《深入理解Java虚拟机(第二版)》书评
2013-07-08 19:19 0值得推荐的中文Java虚拟机入门书 感谢作者赠与的样书,以下 ... -
豆列:从表到里学习JVM实现
2013-06-13 14:13 48359刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ... -
Building Blocks of a JavaScript Engine
2013-05-23 00:49 0sketches of my new book "B ... -
读《JavaScript语言精髓与编程实践(第二版)》
2013-05-21 00:32 02008年逛书店的时候偶 ... -
添加一个bool C1LateInline参数?
2011-11-25 16:03 0之前我试过给Phi加exact_type不行,那如果像C2一样 ... -
别测空循环
2011-06-23 21:56 5257今天有朋友提到一个叫 ReflectASM的库,为Java环境 ... -
javac在编译创建内部类对象时生成的奇怪的getClass()调用是什么?
2011-06-14 22:17 4249有人问下面这段代码里,main()方法里的outer.new ... -
confluence property
2011-06-08 20:41 0http://en.wikipedia.org/wiki/Co ... -
JIT编译找不到类?
2011-05-09 22:28 5196今天开始Sun的老blog真的搬迁了,从blogs.sun.c ... -
几个简答题
2011-01-10 16:08 2451某题目 写道 龙书 写道In addition to a c ... -
循环中的字符串拼接的优化
2010-12-09 20:46 0public class StringConcatDemo { ... -
Velocity模板的编译
2010-11-15 14:49 0http://ecee.colorado.edu/ecen45 ... -
ANTLR里迭代子规则的一个注意点
2010-09-27 15:31 3601这几天在休假在家,有空的时候在用ANTLR 3.2来写D 2. ...
相关推荐
Microsoft.CCI,全称为Common Compiler Infrastructure,是微软推出的一个开源项目,主要目的是为了提供一个通用的编译器基础设施。这个项目的核心目标是让开发者能够更方便地构建、修改和理解编译器,以及进行语言...
该项目是基于TCC-Tiny C Compiler的中文开源C语言编译器设计源码,包含1880个文件,涵盖1216个头文件、270个源文件、136个expect脚本文件、120个BMP图像文件、13个DEF配置文件、9个批处理文件、9个文本文件、8个源...
标题中的“pg149-fir-compiler_Help!_vivadofircompiler_compiler_”暗示了这是一个关于Vivado FIR(Finite Impulse Response)滤波器编译器的问题,用户可能在使用过程中遇到了困难,急需帮助。描述中提到的“help ...
从那时起,LLVM 已经发展成为一个由多个子项目组成的伞形项目,其中许多被各种商业和开源项目用于生产,并被广泛用于学术研究。 LLVM 项目中的代码是根据“Apache 2.0 许可与 LLVM 例外”许可的。 LLVM 核心库提供...
在这个名为"Lexical-Compiler.zip_Help!_LEXical compiler_lexical"的压缩包中,我们关注的焦点是一个词法编译器,它专门用于进行词法分析。 首先,我们要理解什么是词法分析。词法分析器(也叫分词器或词法生成器...
"Yet Another Compiler Compiler Language",简称YACCL,是一个开源的Java递归下降解析器。这个项目旨在提供一种轻量级且简洁的工具,用于构建语法解析器,其设计灵感来源于ANTLR和JavaCC等其他知名的解析器生成器。...
赠送jar包:commons-compiler-3.1.4.jar; 赠送原API文档:commons-compiler-3.1.4-javadoc.jar; 赠送源代码:commons-compiler-3.1.4-sources.jar; 赠送Maven依赖信息文件:commons-compiler-3.1.4.pom; 包含...
【标题】"NES Compiler Collection-开源" NES Compiler Collection是一个专为构建NES(Nintendo Entertainment System)平台上的二进制文件而设计的开源项目。这个工具集提供了完整的编译环境,允许开发者将源代码...
【前端开源库-jquery-widget-compiler】是一款专为前端开发者设计的工具,它基于jQuery库,旨在帮助开发者创建和编译自定义的UI小部件。这个项目的核心目标是将jQuery插件开发体验提升到一个新的层次,引入了类似Web...
**OOPIC Compiler IDE 开源解析** OOPIC(Object-Oriented Programming for Input/Output Control)是一种专门针对机器人控制器编程的语言,旨在简化并优化控制系统的编写过程。最近,其对应的集成开发环境(IDE)...
**PHPCC - PHP Compiler-Compiler 开源项目详解** PHPCC,全称为PHP Compiler-Compiler,是一个基于PHP构建的开源项目,旨在帮助开发者更高效地创建新的编程语言。它类似于C/C++中的Flex和Bison以及Java中的SableCC...
Relay是Facebook推出的一个基于GraphQL的前端开发框架,其核心组件之一就是`Relay Compiler`。这个编译器在前端开发领域扮演着至关重要的角色,它将开发者编写的使用GraphQL查询语句的React组件转化为服务器可以理解...
《Z.C++ compiler suite——开源的力量与技术探索》 Z.C++ compiler suite 是一款开源的编译器套件,其核心目标在于实现跨语言的编译能力,最初专注于C和C++这两种编程语言。开源软件的特性使得这款编译器在开放的...
而编译器编译器(Compiler Compiler),也称为词法分析器和语法分析器生成器,是用于创建编译器的工具,它能帮助开发者自动生成解析源代码的程序。lightJacc就是这样一款独特的开源项目,它以其小型化、高效能以及...
标题“javaCompiler-开源”揭示了我们正在讨论的是一个基于Java的开源编译器项目,它可能被设计用于将Java代码转换成可在不同操作系统上运行的本地机器代码。开源意味着这个编译器的源代码是公开的,允许开发者查看...
《Cafe Compiler项目:探索Java与JVM的开源编译器实现》 Cafe Compiler项目,作为一个开源软件,旨在展示如何使用Java语言来构建针对Java虚拟机(JVM)的多源语言编译器。该项目的核心价值在于为开发者提供一个实践...
本文将深入探讨一个名为"async-compiler"的开源库,它是一个专门用于处理异步函数的JavaScript编译器。我们将讨论异步编译器的概念、它的重要性以及async-compiler库如何实现这一功能。 首先,让我们理解什么是异步...
Formula Compiler是一款开源的软件项目,其核心在于提供了一个平台,让开发者能够自定义编译器,处理算术表达式、逻辑判断以及用户自定义功能。这个项目的源代码是开放的,意味着任何人都可以查看、学习并参与到其中...
ARM Compiler 6 brings together the modern LLVM compiler infrastructure and the highly optimized ARM C libraries to produce performance and power optimized embedded software for the ARM architecture....