Microsoft Phoenix was an SDK available from Microsoft Connect for creating compilers, optimize code, and perform code analysis. Microsoft described it in the past tense on 2008-07-01.
Original Description
t was
T, or t, is the twentieth letter in the Latin alphabet, used in the modern English alphabet, the alphabets of other western European languages and others worldwide. Its name in English is ''tee'' (pronounced ), plural ''tees''. It is deri ...
to be used as the back-end for future compiler technologies from
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
. It
asalso available as an
SDK, a pre-release build of which has been made accessible, to create compilers and code analysis tools using the Phoenix framework.
Overview
Microsoft Phoenix defines an ''intermediate representation'' (IR) for programs, using
ASTs,
control-flow graphs, and an exception handling model. For any program to be handled by Phoenix, it needs to be converted to this representation. The specification for these file type-specific converters, called ''file readers'' in Phoenix terminology, is also specified. Phoenix comes included with readers for
Portable Executable binary files,
CIL and the output of the
Visual C++ front-end.
Readers for other languages can be written using the Phoenix SDK, though separate tools such as
lex
Lex or LEX may refer to:
Arts and entertainment
* ''Lex'', a daily featured column in the ''Financial Times''
Games
* Lex, the mascot of the word-forming puzzle video game ''Bookworm''
* Lex, the protagonist of the word-forming puzzle video ga ...
and
yacc
Yacc (Yet Another Compiler-Compiler) is a computer program for the Unix operating system developed by Stephen C. Johnson. It is a Look Ahead Left-to-Right Rightmost Derivation (LALR) parser generator, generating a LALR parser (the part of a com ...
need to be used to write the
lexer and
parser, respectively.
Once the program has been converted to the IR, the analysis and optimization tools can operate on that form. Phoenix includes a selection of tools – including block counting, memory analysis,
code coverage,
code analysis and
optimization.
The Phoenix SDK can be used to write and plug-in other tools as well.
Code generation is handled by providing architecture-specific (either physical architecture of the processor or a
virtual machine
In computing, a virtual machine (VM) is the virtualization/emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardw ...
architecture) ''file writers''. Phoenix provides the
c2.dll
compiler backend, which it shares with Visual C++, to handle analysis, optimization and code generation for the
x86
x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was introd ...
architecture. Writers for other architectures must be provided separately.
As a result of the modular architecture, any component can be replaced without affecting the rest of the system. For example, to target the compiler to a different architecture, only the file writer specific to the architecture needs to be changed, keeping the rest of the stack unchanged. To create a compiler for a new language, only the readers need to be provided.
Productization
A Phoenix component (phx.dll) is used for some of the static analysis (
FxCop) in Visual Studio 2010.
(The Phoenix compiler itself, which is required for most instrumentation insertion to work, is not included with Visual Studio.)
See also
*
List of compilers
*
Roslyn (compiler)
References
External links
Official Phoenix sitePhoenix SDK June 2008 CTP Releaselatest release to the moment of writing)
{{Microsoft Research
Compilers
Microsoft Research