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