マイクロソフト フェニックス

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を使用して他の言語のリーダーを作成できますが、 lexerparserをそれぞれ作成するには、 lexyaccなどの別のツールを使用する必要があります。

プログラムがIRに変換されると、分析および最適化ツールはその形式で動作できるようになります。 Phoenixには、ブロックカウント、メモリ分析、コードカバレッジコード分析最適化を含む一連のツールが含まれています。[ 10 ] Phoenix SDKを使用して、他のツールを記述してプラグインすることもできます。コード生成は、アーキテクチャ固有(プロセッサの物理アーキテクチャまたは仮想マシンアーキテクチャ)のファイルライターを提供することで処理されます。Phoenixは、 x86c2.dllアーキテクチャの分析、最適化、コード生成を処理するために、Visual C++と共有するコンパイラバックエンドを提供します。他のアーキテクチャ用のライターは別途用意する必要があります。

モジュール型アーキテクチャのおかげで、システムの他の部分に影響を与えることなく、任意のコンポーネントを置き換えることができます。例えば、コンパイラを別のアーキテクチャ向けにしたい場合は、そのアーキテクチャ固有のファイルライターのみを変更すればよく、スタックの残りの部分は変更する必要はありません。新しい言語用のコンパイラを作成する場合は、リーダーのみを用意すれば済みます。

製品化

Visual Studio 2010の静的解析( FxCop )の一部にはPhoenixコンポーネント(phx.dll)が使用されています。[ 11 ](ほとんどのインストルメンテーション挿入に必要なPhoenixコンパイラ自体はVisual Studioには含まれていません。)

参照

参考文献

  1. ^ 「Microsoft Phoenix SDK (2008-07-01)」
  2. ^ 「フェニックス・アカデミック・プログラム」 。 2007年12月13日時点のオリジナルよりアーカイブ2007年11月16日閲覧。
  3. ^ Safonov, Vladimir O. (2010). 「Microsoft Phoenix、Phoenixをターゲットとしたツール、そしてPhoenixプロジェクト」 . Trustworthy Compilers . ホーボーケン、ニュージャージー州: John Wiley & Sons. pp.  239– 276. ISBN 9780470593349. 2019年5月8日閲覧
  4. ^ 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日閲覧
  5. ^ 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日閲覧
  6. ^ Ueng, Sain-Zee; Lathara, Melvin; Baghsorkhi, Sara S.; Hwu, Wen-mei W. 「CUDA-Lite: GPUプログラミングの複雑さの軽減」 .並列コンピューティングのための言語とコンパイラ. イリノイ大学アーバナ・シャンペーン校: Springer: 1– 15. 2019年5月8日閲覧
  7. ^ 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日閲覧.
  8. ^ [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ]
  9. ^ 「Phoenix Compiler Backend」 。 2010年12月26日時点のオリジナルよりアーカイブ2007年11月16日閲覧。
  10. ^ 「Phoenixベースのツール」 。 2010年12月26日時点のオリジナルよりアーカイブ2007年11月16日閲覧。
  11. ^ 「VS 2010 Beta 2 コード分析の詳細な初見」 。 2010年1月6日時点のオリジナルよりアーカイブ2010年3月30日閲覧。