Microsoft Phoenix

Last updated

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. [1]

Contents

Original Description

[It was] to be used as the back-end for future compiler technologies from Microsoft. [8] It [was] also 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. [9] Readers for other languages can be written using the Phoenix SDK, though separate tools such as lex and yacc 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. [10] 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 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 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. [11] (The Phoenix compiler itself, which is required for most instrumentation insertion to work, is not included with Visual Studio.)

See also

Related Research Articles

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

<span class="mw-page-title-main">Windows API</span> Microsofts core set of application programming interfaces on Windows

The Windows API, informally WinAPI, is the foundational application programming interface (API) that allows a computer program to access the features of the Microsoft Windows operating system in which the program is running. Programs access API functionality via dynamic-link library (DLL) technology.

<span class="mw-page-title-main">Microsoft Visual C++</span> Integrated development environment product

Microsoft Visual C++ (MSVC) is a compiler for the C, C++, C++/CLI and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API, DirectX and .NET.

Windows CE, later known as Windows Embedded CE and Windows Embedded Compact, is a discontinued operating system developed by Microsoft for mobile and embedded devices. It was part of the Windows Embedded family and served as the software foundation of several products including the Handheld PC, Pocket PC, Auto PC, Windows Mobile, Windows Phone 7 and others.

<span class="mw-page-title-main">LLVM</span> Compiler backend for multiple programming languages

LLVM, also called LLVM Core, is a target-independent optimizer and code generator. It can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-independent intermediate representation (IR) that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. The name LLVM originally stood for Low Level Virtual Machine. However, the project has since expanded, and the name is no longer an acronym but an orphan initialism.

In computing, D3DX is a high level API library which is written to supplement Microsoft's Direct3D graphics API. The D3DX library was introduced in Direct3D 7, and subsequently was improved in Direct3D 9. It provides classes for common calculations on vectors, matrices and colors, calculating look-at and projection matrices, spline interpolations, and several more complicated tasks, such as compiling or assembling shaders used for 3D graphic programming, compressed skeletal animation storage and matrix stacks. There are several functions that provide complex operations over 3D meshes like tangent-space computation, mesh simplification, precomputed radiance transfer, optimizing for vertex cache friendliness and strip reordering, and generators for 3D text meshes. 2D features include classes for drawing screen-space lines, text and sprite based particle systems. Spatial functions include various intersection routines, conversion from/to barycentric coordinates and bounding box and sphere generators.

<span class="mw-page-title-main">C--</span> C-like programming language

C-- is a C-like programming language, designed to be generated mainly by compilers for high-level languages rather than written by human programmers. It was created by functional programming researchers Simon Peyton Jones and Norman Ramsey. Unlike many other intermediate languages, it is represented in plain ASCII text, not bytecode or another binary format.

The Global Assembly Cache (GAC) is a machine-wide CLI assembly cache for the Common Language Infrastructure (CLI) in Microsoft's .NET Framework. The approach of having a specially controlled central repository addresses the flaws in the shared library concept and helps to avoid pitfalls of other solutions that led to drawbacks like DLL hell.

Microsoft Windows SDK, and its predecessors Platform SDK, and .NET Framework SDK, are software development kits (SDKs) from Microsoft that contain documentation, header files, libraries, samples and tools required to develop applications for Microsoft Windows and .NET Framework. Platform SDK specializes in developing applications for Windows 2000, XP and Windows Server 2003. .NET Framework SDK is dedicated to developing applications for .NET Framework 1.1 and .NET Framework 2.0. Windows SDK is the successor of the two and supports developing applications for Windows XP and later, as well as .NET Framework 3.0 and later.

A dynamic-link library (DLL) is a shared library in the Microsoft Windows or OS/2 operating system.

<span class="mw-page-title-main">NeuroSolutions</span> Neural network development environment

NeuroSolutions is a neural network development environment developed by NeuroDimension. It combines a modular, icon-based (component-based) network design interface with an implementation of advanced learning procedures, such as conjugate gradients, the Levenberg-Marquardt algorithm, and back-propagation through time. The software is used to design, train, and deploy artificial neural network models to perform a wide variety of tasks such as data mining, classification, function approximation, multivariate regression and time-series prediction.

In computer programming, DLL injection is a technique used for running code within the address space of another process by forcing it to load a dynamic-link library. DLL injection is often used by external programs to influence the behavior of another program in a way its authors did not anticipate or intend. For example, the injected code could hook system function calls, or read the contents of password textboxes, which cannot be done the usual way. A program used to inject arbitrary code into arbitrary processes is called a DLL injector.

The Microsoft Windows operating system supports a form of shared libraries known as "dynamic-link libraries", which are code libraries that can be used by multiple processes while only one copy is loaded into memory. This article provides an overview of the core libraries that are included with every modern Windows installation, on top of which most Windows applications are built.

<span class="mw-page-title-main">Visual Basic (classic)</span> Microsofts programming language based on BASIC and COM

Visual Basic (VB), sometimes referred to as Classic Visual Basic, is a third-generation programming language based on BASIC, as well as an associated integrated development environment (IDE). Visual Basic was developed by Microsoft for Windows, and is known for supporting rapid application development (RAD) of graphical user interface (GUI) applications, event-driven programming, and both consumption and development of components via the Component Object Model (COM) technology.

<span class="mw-page-title-main">Visual Studio</span> Code editor and IDE

Visual Studio is an integrated development environment (IDE) developed by Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms including Windows API, Windows Forms, Windows Presentation Foundation (WPF), Microsoft Store and Microsoft Silverlight. It can produce both native code and managed code.

Oracle Developer Studio, formerly named Oracle Solaris Studio, Sun Studio, Sun WorkShop, Forte Developer, and SunPro Compilers, is the Oracle Corporation's flagship software development product for the Solaris and Linux operating systems. It includes optimizing C, C++, and Fortran compilers, libraries, and performance analysis and debugging tools, for Solaris on SPARC and x86 platforms, and Linux on x86/x64 platforms, including multi-core systems.

<span class="mw-page-title-main">.NET Framework</span> Software platform developed by Microsoft

The .NET Framework is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until being superseded by the cross-platform .NET project. It includes a large class library called Framework Class Library (FCL) and provides language interoperability across several programming languages. Programs written for .NET Framework execute in a software environment named the Common Language Runtime (CLR). The CLR is an application virtual machine that provides services such as security, memory management, and exception handling. As such, computer code written using .NET Framework is called "managed code". FCL and CLR together constitute the .NET Framework.

Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.

<span class="mw-page-title-main">Mono (software)</span> Computer software project

Mono is a free and open-source software framework that aims to run software made for the .NET Framework on Linux and other OSes. Originally by Ximian which was acquired by Novell, it was later developed by Xamarin which was acquired by Microsoft. In August 2024, Microsoft transferred ownership of Mono to WineHQ.

Absoft Corporation was an American software company active from 1980 to 2022. They were best known for their set of Fortran compilers for Microsoft Windows, Apple Macintosh, and Linux operating systems. The compilers are source code compatible across platforms.

References

  1. "Microsoft Phoenix SDK (2008-07-01)".
  2. "Phoenix Academic Program". Archived from the original on December 13, 2007. Retrieved November 16, 2007.
  3. Safonov, Vladimir O. (2010). "Microsoft Phoenix, Phoenix-Targeted Tools, and Our Phoenix Projects". Trustworthy Compilers. Hoboken, New Jersey: John Wiley & Sons. pp. 239–276. ISBN   9780470593349 . Retrieved May 8, 2019.
  4. Tairas, Robert; Gray, Jeff (March 10, 2006). "Phoenix-Based Clone Detection Using Suffix Trees" (PDF). Proceedings of the 44th Annual Southeast Regional Conference. Association for Computing Machinery: 679–684. doi:10.1145/1185448.1185597. ISBN   1-59593-315-8 . Retrieved May 8, 2019.
  5. Safonov, Vladimir; Gratchev, Mikhail; Grigoryev, Dmitry; Maslennikov, Alexander (May 29 – June 1, 2006). "Aspect.NET — aspect-oriented toolkit for Microsoft.NET based on Phoenix and Whidbey" (PDF). .NET Technologies 2006. University of West Bohemia: 19–30. Retrieved May 8, 2019.
  6. Ueng, Sain-Zee; Lathara, Melvin; Baghsorkhi, Sara S.; Hwu, Wen-mei W. "CUDA-Lite: Reducing GPU Programming Complexity". Languages and Compilers for Parallel Computing. University of Illinois at Urbana-Champaign: Springer: 1–15. Retrieved May 8, 2019.
  7. Castro, Miguel; Costa, Manuel; Harris, Tim (November 6, 2006). "Securing software by enforcing data-flow integrity" (PDF). Proceedings of the 7th Symposium on Operating Systems Design and Implementation. USENIX Association: 147–160. Retrieved May 8, 2019.
  8. [2] [3] [4] [5] [6] [7]
  9. "Phoenix Compiler Backend". Archived from the original on December 26, 2010. Retrieved November 16, 2007.
  10. "Phoenix based tools". Archived from the original on December 26, 2010. Retrieved November 16, 2007.
  11. "VS 2010 Beta 2 Code Analysis In-Depth First Look". Archived from the original on January 6, 2010. Retrieved March 30, 2010.