Microsoft Phoenix era un SDK disponible en Microsoft Connect para crear compiladores, optimizar código y realizar análisis de código. Microsoft lo describió en tiempo pasado el 1 de julio de 2008. [ 1 ]
Descripción original
[Estaba] destinado a ser utilizado como back-end para futuras tecnologías de compilación de Microsoft . [ 8 ] También estaba disponible como un SDK , del cual se ha hecho accesible una compilación de pre-lanzamiento, para crear compiladores y herramientas de análisis de código utilizando el marco Phoenix.
Descripción general
Microsoft Phoenix define una representación intermedia (IR) para programas, utilizando AST , grafos de flujo de control y un modelo de manejo de excepciones. Para que cualquier programa pueda ser procesado por Phoenix, debe convertirse a esta representación. También se especifica la especificación para estos convertidores específicos de tipo de archivo, llamados lectores de archivos en la terminología de Phoenix. Phoenix incluye lectores para archivos binarios ejecutables portátiles , CIL y la salida del front-end de Visual C++ . [ 9 ] Se pueden escribir lectores para otros lenguajes utilizando el SDK de Phoenix, aunque se necesitan herramientas separadas como lex y yacc para escribir el analizador léxico y el analizador sintáctico , respectivamente.
Una vez que el programa se ha convertido al IR, las herramientas de análisis y optimización pueden operar sobre ese formato. Phoenix incluye una selección de herramientas, que incluyen conteo de bloques, análisis de memoria, cobertura de código , análisis de código y optimización . [ 10 ] El SDK de Phoenix también se puede usar para escribir e integrar otras herramientas. La generación de código se maneja proporcionando escritores de archivos específicos de la arquitectura (ya sea la arquitectura física del procesador o una arquitectura de máquina virtual ) . Phoenix proporciona el backend del compilador, que comparte con Visual C++, para manejar el análisis, la optimización y la generación de código para la arquitectura x86 . Los escritores para otras arquitecturas deben proporcionarse por separado.c2.dll
Gracias a su arquitectura modular, cualquier componente puede reemplazarse sin afectar al resto del sistema. Por ejemplo, para adaptar el compilador a una arquitectura diferente, solo es necesario modificar el escritor de archivos específico de dicha arquitectura, manteniendo el resto de la pila sin cambios. Para crear un compilador para un nuevo lenguaje, solo se requieren los lectores.
Productización
En Visual Studio 2010 se utiliza un componente de Phoenix (phx.dll) para algunos análisis estáticos ( FxCop ). [ 11 ] (El compilador de Phoenix en sí, que es necesario para que funcione la mayoría de las inserciones de instrumentación, no está incluido en Visual Studio).
Véase también
Referencias
- ↑ "Microsoft Phoenix SDK (2008-07-01)" .
- ↑ "Programa Académico Phoenix" . Archivado del original el 13 de diciembre de 2007. Consultado el 16 de noviembre de 2007 .
- ↑ Safonov, Vladimir O. (2010). «Microsoft Phoenix, herramientas dirigidas a Phoenix y nuestros proyectos Phoenix» . Compiladores confiables . Hoboken, Nueva Jersey: John Wiley & Sons. págs. 239–276 . ISBN 9780470593349. Consultado el 8 de mayo de 2019 .
- ↑ Tairas, Robert; Gray, Jeff (10 de marzo de 2006). "Detección de clones basada en Phoenix mediante árboles de sufijos" (PDF) . Actas de la 44.ª conferencia regional anual del sureste . Association for Computing Machinery. págs. 679–684 . doi : 10.1145/1185448.1185597 . ISBN 1-59593-315-8. Consultado el 8 de mayo de 2019 .
- ↑ Safonov, Vladimir; Gratchev, Mikhail; Grigoryev, Dmitry; Maslennikov, Alexander (29 de mayo - 1 de junio de 2006). "Aspect.NET: kit de herramientas orientado a aspectos para Microsoft.NET basado en Phoenix y Whidbey" (PDF) . Tecnologías .NET 2006. Universidad de Bohemia Occidental: 19-30 . Consultado el 8 de mayo de 2019 .
- ↑ Ueng, Sain-Zee; Lathara, Melvin; Baghsorkhi, Sara S.; Hwu, Wen-mei W. "CUDA-Lite: Reduciendo la complejidad de la programación de GPU" . Lenguajes y compiladores para computación paralela . Universidad de Illinois en Urbana-Champaign: Springer: 1–15 . Consultado el 8 de mayo de 2019 .
- ↑ Castro, Miguel; Costa, Manuel; Harris, Tim (6 de noviembre de 2006). "Protección del software mediante la aplicación de la integridad del flujo de datos" (PDF) . Actas del 7.º Simposio sobre Diseño e Implementación de Sistemas Operativos . Asociación USENIX: 147–160 . Consultado el 8 de mayo de 2019 .
- ↑ [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
- ↑ "Phoenix Compiler Backend" . Archivado del original el 26 de diciembre de 2010. Recuperado el 16 de noviembre de 2007 .
- ↑ "Herramientas basadas en Phoenix" . Archivado del original el 26 de diciembre de 2010. Consultado el 16 de noviembre de 2007 .
- ↑ "Análisis en profundidad del código de VS 2010 Beta 2" . Archivado del original el 6 de enero de 2010. Consultado el 30 de marzo de 2010 .
Enlaces externos
- Sitio web oficial de Phoenix
- Versión CTP de junio de 2008 del SDK de Phoenix (última versión disponible al momento de escribir este texto)
- Compiladores
- Investigación de Microsoft