問題タブ [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.
java - すすのある Android APK 制御フロー グラフ
Android APK からすす API を使用して制御フロー グラフを作成しようとしています。私はたくさん読んだことがありますが、最初から始める方法に少し無力感があります. バージョン 2.5.0 が古くなっていることを読んだので、すすの nighty ビルド (ここからダウンロード: https://ssebuild.cased.de/nightly/soot/lib/ ) を使用しています。たとえば、Googleで多くのことを見つけました:
https://mailman.cs.mcgill.ca/pipermail/soot-list/2014-September/007303.html
まず、Android APK ファイルをロードする必要があります。リンクでそれは行われます:
しかし、それはすでに最初の問題です。ナイトリー ビルドのsoot.jar には SetupApplicationがありません。
ここのように、コマンドラインでそれを行いました:
http://www.abartel.net/dexpler/
これはほとんど機能しましたが、制御フロー グラフの作成は最初のステップにすぎません。その後、グラフを操作し、それを他のフレームワークの入力として使用する必要があります。したがって、コマンドラインは私にとってオプションではありません。Javaでやりたい!
誰かがすすの初心者を助けることができますか?
c++ - 複数スレッドの基本ブロックと制御フロー グラフ
マルチスレッドと C++11 スレッドは初めてで、スレッドがアーキテクチャ レベルでどのように動作するかを確認しようとしています。これで、異なるスレッドが独自の独立した制御フローを持つことが可能になりました。同じ実行で異なるスレッドの基本的なブロック情報と制御フロー グラフを取得するにはどうすればよいですか? g++ で実行できますか、それとも他のツールが必要ですか?
gcc - PGO はソース コードにどのように適用されますか? CFG にどのように影響しますか?
最近、私は PGO の関連トピックを検索しており、それらがソース コードにどのように適用され、あるアプリケーションが次々と適用されているのか疑問に思い始めました。
たとえば、GCC や CLang で PGO 最適化を有効にすると、すべての最適化 (インライン化、仮想呼び出しスペキュレーション、デッド コード分離など) が適用されますよね!?
それらがすべてソースコードに適用されていなくても、いくつかは適用されているとしましょう。すると、順次適用されるのではないでしょうか?
では、CFG (コントロール フロー グラフ) を変更して、基本ブロックの周波数が失われるようにすることはできますか?
たとえば、「A」という名前の PGO の後に「B」という名前の PGO が適用され、「A」がソース コードを変更して基本ブロック周波数の一部が失われた場合、「B」はどのように適用されるか (両方が PGO であると仮定) BB周波数に依存します)?
(下手な英語でごめんなさい)
stream - データフロー処理
自然にグラフ構造をとると思われる計算のクラスがあります。複数の入力、ファン アウトするノード、および他のいくつかのノードの結果を必要とするノードがあるため、グラフは線形とはほど遠いものです。これらすべての計算には、複数のシンクも存在する可能性があります。ただし、サイクルは存在しません。入力ノードが更新され (一度に 1 つずつである必要はありません)、それらの値が (この時点では純粋に概念的な) グラフを流れます。ノードは入力が変化しても状態を保持し、計算は入力に対して順番に実行する必要があります。
私はそのような計算をかなり頻繁に書かなければならず、毎回アドホックなコードを書くことに気が進まないので、さまざまな頂点のクラスを書くことによってそのような計算を簡単にまとめられるように小さなライブラリを書いてみました。ただし、私のコードはかなり洗練されておらず、これらの計算の並列構造をまったく利用していません。通常、各頂点は軽量ですが、計算は非常に複雑で「広範囲」になる可能性があります。問題をさらに複雑にしているのは、これらの計算の入力がループ内で非常に頻繁に更新されることです。幸いなことに、問題は十分に小さいので、1 つのノードで処理できます。
誰も似たようなことを扱ったことがありますか?どのようなアイデア/アプローチ/ツールをお勧めしますか?
for-loop - ネストされた for ループの制御フロー グラフを描画するには?
上記のコード セグメントの制御フロー グラフを描画する方法は?
前もって感謝します :)