HOME

TheInfoList



OR:

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 Release
latest release to the moment of writing) {{Microsoft Research Compilers Microsoft Research