Microsoft Phoenixは 、Microsoft Connectから入手可能な、コンパイラの作成、コードの最適化、コード分析を行うためのSDKでした。Microsoftは2008年7月1日に過去形でこれを説明しました。[ 1 ]
元の説明 [これは]マイクロソフト の将来のコンパイラ技術のバックエンドとして使われることになっていた。[ 8 ] また、 Phoenixフレームワークを使ってコンパイラやコード分析ツールを作成するためのSDK としても利用可能で、そのプレリリースビルドがアクセス可能になっている。
概要 Microsoft Phoenixは、 AST 、制御フローグラフ 、例外処理モデルを使用して、プログラムの中間表現(IR)を定義します。Phoenixで処理するプログラムは、この表現に変換する必要があります。Phoenixの用語では ファイルリーダーと呼ばれる、ファイルタイプ固有のコンバータの仕様も規定されています。Phoenixには、 Portable Executable バイナリファイル、CIL、および Visual C++ フロントエンドの出力用のリーダーが含まれています。 [ 9 ] Phoenix SDKを使用して他の言語のリーダーを作成できますが、 lexer とparserをそれぞれ作成するには、 lex やyacc などの別のツールを使用する必要があります。
プログラムがIRに変換されると、分析および最適化ツールはその形式で動作できるようになります。 Phoenixには、ブロックカウント、メモリ分析、コードカバレッジ 、コード分析 と最適化 を含む一連のツールが含まれています。[ 10 ] Phoenix SDKを使用して、他のツールを記述してプラグインすることもできます。コード生成は 、アーキテクチャ固有(プロセッサの物理アーキテクチャまたは仮想マシン アーキテクチャ)のファイルライターを提供することで処理されます。Phoenixは、 x86 c2.dllアーキテクチャの分析、最適化、コード生成を処理するために、Visual C++と共有するコンパイラバックエンドを提供します。他のアーキテクチャ用のライターは別途用意する必要があります。
モジュール型アーキテクチャのおかげで、システムの他の部分に影響を与えることなく、任意のコンポーネントを置き換えることができます。例えば、コンパイラを別のアーキテクチャ向けにしたい場合は、そのアーキテクチャ固有のファイルライターのみを変更すればよく、スタックの残りの部分は変更する必要はありません。新しい言語用のコンパイラを作成する場合は、リーダーのみを用意すれば済みます。
製品化 Visual Studio 2010の静的解析( FxCop )の一部にはPhoenixコンポーネント(phx.dll)が使用されています。[ 11 ] (ほとんどのインストルメンテーション挿入に必要なPhoenixコンパイラ自体はVisual Studioには含まれていません。)
参照
参考文献 ^ 「Microsoft Phoenix SDK (2008-07-01)」 。^ 「フェニックス・アカデミック・プログラム」 。 2007年12月13日時点の オリジナル よりアーカイブ 。 2007年 11月16日 閲覧。 ^ Safonov, Vladimir O. (2010). 「Microsoft Phoenix、Phoenixをターゲットとしたツール、そしてPhoenixプロジェクト」 . Trustworthy Compilers . ホーボーケン、ニュージャージー州: John Wiley & Sons. pp. 239– 276. ISBN 9780470593349 . 2019年5月8日 閲覧 。^ Tairas, Robert; Gray, Jeff (2006年3月10日). 「Phoenixベースのクローン検出におけるサフィックスツリーの使用」 (PDF) . 第44回南東部地域会議議事録 . Association for Computing Machinery. pp. 679– 684. doi : 10.1145/1185448.1185597 . ISBN 1-59593-315-8 . 2019年5月8日 閲覧 。^ Safonov, Vladimir; Gratchev, Mikhail; Grigoryev, Dmitry; Maslennikov, Alexander (2006年5月29日~6月1日). 「Aspect.NET — PhoenixとWhidbeyに基づくMicrosoft.NET向けアスペクト指向ツールキット」 (PDF) . .NET Technologies 2006 . 西ボヘミア大学: 19–30 . 2019年 5月8日 閲覧 。 ^ Ueng, Sain-Zee; Lathara, Melvin; Baghsorkhi, Sara S.; Hwu, Wen-mei W. 「CUDA-Lite: GPUプログラミングの複雑さの軽減」 . 並列コンピューティングのための言語とコンパイラ . イリノイ大学アーバナ・シャンペーン校: Springer: 1– 15. 2019年 5月8日 閲覧 。 ^ Castro, Miguel; Costa, Manuel; Harris, Tim (2006年11月6日). 「データフロー整合性の強化によるソフトウェアのセキュリティ確保」 (PDF) . Proceedings of the 7th Symposium on Operating Systems Design and Implementation . USENIX Association: 147–160 . 2019年 5月 8日 閲覧 . ^ [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] ^ 「Phoenix Compiler Backend」 。 2010年12月26日時点の オリジナル よりアーカイブ 。 2007年 11月16日 閲覧。 ^ 「Phoenixベースのツール」 。 2010年12月26日時点の オリジナル よりアーカイブ 。 2007年 11月16日 閲覧。 ^ 「VS 2010 Beta 2 コード分析の詳細な初見」 。 2010年1月6日時点の オリジナル よりアーカイブ 。 2010年 3月30日 閲覧。
外部リンク