2

C プログラムのループ展開形式を確認できるかどうか疑問に思っています。たとえば、次のforループがあります

// The following code mimics functionality of a logic circuit whose
//inputs are a,b,c and d
//output f
//At every for loop iteration, fresh values of a,b,c and d are input
//to the code whereas k value is used from the previous iteration.

    bool k = 0;
    bool a,b,c,d;
    bool g,h,n,j,f;

    for(i = 1; i < 100; i++)
    {
    h = !(a | b);  //nor gate
    g =  (b & c);  //and gate
    n = !(c & d);  //nand gate
    f = (k==0) ? h : g;  //mux
    j = n ^ f;    //xor gate
    k = j;
    }

問題は、「このプログラムのループ展開形式を読み取り可能な形式で表示することは可能か」ということです。gcc コンパイラが h99、g99、n99、f99、j99、および k99 (99 回目のループ反復での h、g、n、f、j、および k の値) をどのように表現できるかを知りたいです。または、h99、g99、n99、f99、j99、および k99 の式を入力 a99、b99、c99、d99 から a1、b1、c1、および d1 まで下げるにはどうすればよいでしょうか。

一言で言えば、すべての反復 "i" でシンボリック シミュレーションを実行したいと考えています。 d1.

ご不明な点がございましたら、お知らせください。

4

2 に答える 2