問題タブ [control-flow-graph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#:コードからコール階層にアクセスする
Visual Studioでは、単一の関数の呼び出し階層を表示できます。私が探しているのは同じ機能ですが、C#コード内からアクセスできます。
自作のVisualStudioプラグインを介して一部のAPIを使用することは可能ですか?または、コード分析を行うためにいくつかのライブラリに直接アクセスできますか?
静的コード分析を通じてプログラムのCFGを取得するだけで十分です。
loops - LLVM CFG のループの特定
ループの不変条件を識別し、それらの不変条件を使用している命令をループ本体の上に引き上げるパスを llvm で作成しています。しかし、そのためには、あるノードから別のノードへのバック エッジがあるかどうかを知る必要があります。たとえば、ノード N からノード H へのバック エッジがあるかどうかを調べたいとします。ここで、ノード H はノード N を支配し、自然なループを識別するのに役立ちます。CFG のあるノードから別のノードへのエッジがあるかどうかを確認するにはどうすればよいですか? この情報を収集できる CFG というクラスが LLVM に見つかりませんでした。
design-patterns - のぞき穴の最適化パターン
ローカル最適化コンパイラの手法について調べてきましたが、それらがどのように実装されているかわかりません。アイデアは、オプティマイザがコードの「ウィンドウ」を毎回見て、どういうわけかパターンを検出し、それらをより最適化されたバージョンに置き換えるというものです。
私の質問は、これらのパターンをどのように発見するのですか? (あなたのプラットフォームが、Schocken's Hack のような、組み立てられたコンピューターのアセンブリ コードを出力する VM であるとしましょう)。
人々は実際に手動で (制御フロー グラフや DAG などを使用して) コードを検査し、識別されたすべてのパターンを収集してオプティマイザにコーディングしますか? または、自動的な方法があります。
たとえば、最適化するコードをアナライザーにフィードすると、前述のパターンが吐き出されます。もしそうなら、どうやって書き始めることができますか?
static-analysis - JSON オブジェクト (AST) から制御フロー グラフ (CFG) を作成する方法
JSON 形式で指定された AST から制御フロー グラフ (CFG) を作成したいと考えています。したがって、この AST は各スクリプトに対して TouchDevelop で自動的に作成されます。また、TouchDevelop はオブジェクト指向プログラミングではないため、Visitor パターンを引き続き使用できますか? 有用なポインタをいただければ幸いです。
Update1:私の問題は、どこから始めればよいかわからないことです。インターネットから、Visitor Pattern を使用して AST をウォークスルーし、各ノードにアクセスして情報を収集することになっています。そこから CFG を構築し、データ フロー分析を行うことができます。しかし、次の 2 つの問題があります。
1)私の知る限り、訪問者パターンを使用するにはオブジェクト指向プログラミングモデルが必要です(私は間違っているかもしれません)が、TouchDevelopはそうではありません。
2) 以下の AST は、インターネットで見つけた AST 形式ではありません。JSON形式です。JSON を解析して目的の AST 構造に変換できると思いますが、よくわかりません。
サンプルスクリプトのソースコード
結果の AST (JSON 形式) を以下に示します。
eclipse - 実行時にユーザー定義コードの制御フロー グラフを作成する方法
ユーザーが編集テキスト (TextBox またはその他) に何らかのコードを記述し、プログラムがすべての定義と用途を認識するとします。Eclipse の CFG 作成機能を使って Control Flow Graph を表示したい。
- 出来ますか ?
- Visual Studio のような userDefined コードの CFG を表示するために CFG を作成する機能が組み込まれている他のツールを使用できますか?
あらゆる種類のアプリ、アプリケーション (Windows フォーム、Android など) について話しています。
llvm - llvm からの CFG を xvcg に表示する
llvm のプログラムには-view-cfg
オプション ( docopt
) があり、プログラムを介して制御フロー グラフを表示できますdot
。しかし、ドットからポストスクリプトとしてレンダリングするには CFG が大きすぎます。xvcg
CFGを含む複雑なグラフを表示できるユーティリティがあることを私は知っています(そしてその人は「VCGツール-コンパイラグラフの視覚化」と言っています)。
では、llvm の CFG を xvcg 形式で出力するにはどうすればよいでしょうか。
java - コマンド ライン制御フロー グラフ
コマンドラインから人間が読める制御フロー グラフを生成するツールはありますか? 写真よりもテキストベースが望ましい。
私が見たほぼすべての CFG ジェネレーターは、物事をかなり遅くする Eclipse プラグインです。
編集: ここでは Java のみ。