2017-08-12 11 views
-3

CSAPPエクササイズ3.18では、アセンブリコードを使用してCコードを回復する必要があります。 は空白に記入されています。コメントの答えは私の答えです。次のように Cコード:以下のようATTのアセンブリコードからCコードを回復する際に異なる回答

int test(int x ,int y) 
{ 
    int val=_x^y__; //x-y 
    if(_x<-3__){ 
     if(_x>y_) val=_x*y_; 
     else val=_x+y; 
      } 
    else if(_x>2_)  //x<=2 
     val=__x-y__; //x^y 
    return val; 
} 

アセンブリコード: enter image description here

本が前に伝えスキルに応じて、私は私の答えは正しいと思います。

答えて

2

コード内のコメント(あなたの回答)は、実際のコードとまったく同じ結果になるので、どちらも正しいです。

我々はx < -3部分を無視した場合、2つのバージョンがある:

ブック版:

int val=x^y; 
if (x>2) 
    val=x-y; 

あなたのバージョン:

int val=x-y; 
if (x<=2) 
    val=x^y; 

if条件は同様に切り替わっているので、割り当てをvalにすると、どちらの場合もvalの値はになりますの場合はの場合x<=2x-yの場合。

関連する問題