Phoenix 编译器框架说明

  • Abel Avram
  • 朱永光

2008 年 5 月 28 日

话题:.NET语言 & 开发

Phoenix 框架的构架师 Andy Ayers,通过在Channel9上 做的一个视频来设法解释 Phoenix 编译器框架(Compiler Framework)究竟是什么,以及它是如何工作的。Phoenix 不仅仅限于一个编译器,它还是一个软件优化和分析框架,能被其他编译器和工具使用。 它能生成二进制代码,也能输出 MSIL 程序集。源代码可以经过分析,并被表示为 IR(中间表示,Intermediate Representation)形式,这种形式可以在后期被各种工具分析和处理。它的工作方式确实不像一个 JIT 编译器(JITer,即时编译器)。

与其它编译器相似,Phoenix 也把源代码转化为二进制内容。一个主要的区别是,Phoenix 将微软所有的编译器(超过 25 个)聚集成一个,为微软支持的所有语言和平台生成二进制文件或 MSIL 代码。

一 个绝妙的特性是,Phoenix 作为一个框架,包含一些 API,同时还是可插接的。人们能使用这些 API 编写利用 Phoenix 特性的工具。例如,开发者 可以编写他自己的工具来分析 IR 文件,并生成一些如何优化源代码的总结。可插接的特性同样会带来极大的方便。Andy 说道,微软通常需要 1-2 年的时间为 新的硬件芯片生成所有的编译器。如今,当芯片上市的时候,硬件制造商能够交付一个 Phoenix 插件,用来为新芯片编译源代码。

和其它微软的主要编译器一样,Phoenix 必须通过 Windows、Office、Visual Studio 和其他几个庞大产品的编译测试,这些产品可以把编译器推到极限。这样做保证了编译器经受了真实世界、复杂软件的检验,以检查出任何存在其中的 Bug。

这个编译器内部支持多线程,这样就能够在基于编译所用的平台上获得更快的构建时间(Build Time)。在一个四处理器的机器上,构建时间比单处理器的机器快 5 倍。

Microsoft Connect 站点最近发布了Phoenix SDK - 2008 年 4 月 CTP 版。这个版本在 2007 年 7 月发布的早先版本的基础上,有了很多功能的增强,并对错误进行了修正。关于 Phoenix 的更多信息可以在Microsoft Connect找到。

查看英文原文:An Explanation of the Phoenix Compiler Framework
.NET语言 & 开发