stringtranslate.com

Microsoft Fénix

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 SDK , una versión preliminar del cual se ha hecho accesible, 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 , gráficos de flujo de control y un modelo de manejo de excepciones. Para que Phoenix maneje cualquier programa, debe convertirse a esta representación. También se especifica la especificación para estos convertidores de tipos de archivos específicos, llamados lectores de archivos en la terminología de Phoenix. Phoenix viene incluido con lectores de archivos binarios ejecutables portátiles , CIL y la salida del front-end de Visual C++ . [9] Se pueden escribir lectores para otros idiomas usando Phoenix SDK, aunque se deben usar herramientas separadas como lex y yacc para escribir lexer y parser , respectivamente.

Una vez que el programa se ha convertido al IR, las herramientas de análisis y optimización pueden operar en esa forma. Phoenix incluye una selección de herramientas, que incluyen recuento de bloques, análisis de memoria, cobertura de código , análisis y optimización de código . [10] El SDK de Phoenix también se puede utilizar para escribir y conectar otras herramientas. La generación de código se maneja proporcionando escritores de archivos específicos de la arquitectura (ya sea una 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 la arquitectura modular, cualquier componente puede sustituirse sin afectar al resto del sistema. Por ejemplo, para orientar el compilador a una arquitectura diferente, solo es necesario cambiar el escritor de archivos específico de la arquitectura, manteniendo el resto de la pila sin cambios. Para crear un compilador para un nuevo lenguaje, sólo es necesario proporcionar los lectores.

Productización

Se utiliza un componente Phoenix (phx.dll) para algunos de los análisis estáticos ( FxCop ) en Visual Studio 2010. [11] (El compilador Phoenix en sí, que es necesario para que funcione la mayor parte de la inserción de instrumentación, no está incluido con Visual Studio. )

Ver también

Referencias

  1. ^ "SDK de Microsoft Phoenix (1 de julio de 2008)".
  2. ^ "Programa Académico Phoenix". Archivado desde el original el 13 de diciembre de 2007 . Consultado el 16 de noviembre de 2007 .
  3. ^ Safonov, Vladimir O. (2010). "Microsoft Phoenix, herramientas específicas de 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 .
  4. ^ 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 Sudeste . Asociación de Maquinaria de Computación: 679–684 . Consultado el 8 de mayo de 2019 .
  5. ^ Safonov, Vladimir; Gratchev, Mikhail; Grigoriev, 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 .
  6. ^ Ueng, Sain-Zee; Lathara, Melvin; Baghsorkhi, Sara S.; Hwu, Wen-mei W. "CUDA-Lite: Reducción de 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 .
  7. ^ Castro, Miguel; Costa, Manuel; Harris, Tim (6 de noviembre de 2006). "Proteger el software haciendo cumplir la integridad del flujo de datos" (PDF) . Actas del Séptimo Simposio sobre diseño e implementación de sistemas operativos . Asociación USENIX: 147–160 . Consultado el 8 de mayo de 2019 .
  8. ^ [2] [3] [4] [5] [6] [7]
  9. ^ "Backend del compilador Phoenix". Archivado desde el original el 26 de diciembre de 2010 . Consultado el 16 de noviembre de 2007 .
  10. ^ "Herramientas basadas en Phoenix". Archivado desde el original el 26 de diciembre de 2010 . Consultado el 16 de noviembre de 2007 .
  11. ^ "Primer vistazo al análisis de código en profundidad de VS 2010 Beta 2". Archivado desde el original el 6 de enero de 2010 . Consultado el 30 de marzo de 2010 .

enlaces externos