Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ATT中的汇编代码恢复C代码时的不同答案_C_Assembly - Fatal编程技术网

从ATT中的汇编代码恢复C代码时的不同答案

从ATT中的汇编代码恢复C代码时的不同答案,c,assembly,C,Assembly,CSAPP练习3.18要求用装配代码恢复C代码, 书中给出的答案填在空白处;评论中的答案是我的答案。 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=__

CSAPP练习3.18要求用装配代码恢复C代码, 书中给出的答案填在空白处;评论中的答案是我的答案。 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;
}
int测试(int x,int y)
{
int val=\u x^y\u;//x-y
如果(_xy_uu)val=_x*y;
else val=x+y;
}
否则如果(x>2_x)//x代码中的注释(您的答案)将产生与实际代码完全相同的结果,因此它们都是正确的

如果忽略
x<-3
部分,则两个版本为:

图书版本:

int val=x^y;
if (x>2)
    val=x-y;
您的版本:

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