ssa

    1

    1答えて

    私は現在LLVMで遊んでいますが、optとclangに慣れ親しむいくつかのオプティマイザを書こうとしています。 clang -emit-llvm -O0 -c test.c -o test.bc llvm-dis test.bc opt -mem2reg -S test.ll -o test-mem2reg.ll 両方の.ll:私は2つの.llファイル、最適化されていない1とmem2reg

    2

    1答えて

    抽象構文木をSSA形式に直接変換することはできますか、または制御フローグラフを作成してから、そのCFGから静的単一代入形式を作成する必要がありますか? コントロールフローグラフのコンテキストでは、Cのようなプログラムでこれをどのように表しますか?私はすべての基本ブロックのCFGのグラフをすべての関数に格納できると思っていますが、関数を呼び出すと、複雑になることがあります。私が考えることのできる別の

    2

    1答えて

    SSA: int main() { int x; x = 10; x = 20; return 0; } コンパイルをして clang -emit-llvm -c ssa.c IRは を生成し、次のコマンドを使用してIR表現を生成 ; Function Attrs: nounwind uwtable define i32 @main()

    0

    1答えて

    コンパイラがSSA形式を使用してコードを表すとき、ローカル変数への更新は新しい変数になります。しかし、変数が囲みスコープ内にある場合、これは必ずしも機能しません。 (説明のためにJavaScriptシンタックスを使用すると、多言語で状況が発生する可能性があります)。 function f() { var x = 1; function g() { x++;

    2

    1答えて

    これは私がこれまでに思い付くことができるものである:関連 GCC: SSA for Trees Tree SSA – A New Optimization Framework for GCC Tree SSA A New Optimization Infrastructure for GCC Design and Implementation of Tree SSA その他: An Impleme

    6

    1答えて

    私はレジスタベースとスタックベースの仮想マシンがどのように独立して動作するかを知っています。私は両方の長所と短所を知っています。私が知りたいことは誰もが2つをマージしようとしたことですか? このような仮想マシンの存在についてネットを検索しようとしましたが、無駄です。私が得た最良の結果は、ハイブリッド仮想マシン(HyVM)に関する記事でした。このような仮想マシンが実際にプログラミング言語用に作成され

    1

    1答えて

    スタティックシングルアサイン(SSA)形式のIRにレジスタベースのバイトコード用のコンパイラを記述しています(具体的には、Dalvik VMバイトコードからLLVM IR、私は質問が一般的な話題のために取られることを望んでいると思う)、これについて行くために最高、または理論的にクリーンな方法を疑問に思っています。例えば 我々はレジスタベースの命令を持っている場合、: add vA, vB, vC

    9

    1答えて

    私はスタックマシン用のコンパイラ(特にCIL)を開発しており、コードを基本ブロックのグラフに解析しました。ここからは、SSAをメソッドに適用することを検討していますが、それほどうまくいきません。私の最初の試み(グラフではなくフラットなリストを使って作業している間)は、コードを反復してSSA idsのスタックを保持していました(割り当てターゲットの場合)。彼らは使用されています。これは単一の基本ブロ