您的位置:首页 > 理论基础

《深入理解计算机系统》(原书第三版)家庭作业第三章(3.63)解答

2017-08-27 11:57 447 查看
原题目:





**3.63 伪代码分析:
x rdi ;n rsi
n=n-0x3c(60);
if(n>5){-->4005c3
}
else{
goto:*(8n+0x4006f8)
n=0 : 0x4006f8 -->0x4005a1
n=1 : 0x400700 -->0x4005c3
n=2 : 0x400708 -->0x4005a1
n=3 : 0x400710 -->0x4005aa
n=4 : 0x400718 -->0x4005b2
n=5 : 0x400720 -->0x4005bf
}

0x4005a1{
result = 8x;
return result;
}

0x4005aa{
result = x>>3;
return result;
}

0x4005b2{
x=[(x<<4)-x]*[(x<<4)-x];(x=225x;)
result = x+0x4b;(75)
return result;
}

0x4005bf{
x=x*x;
result = x+0x4b;(75)
return result;
}

4005c3{
result = x+0x4b
return result;
}

答案:
long switch_prob(long x,long n)
{
long result = x;
switch(n) {
case 60:
case 62:
result = 8*x;
break;
case 61:
result = x+0x4b;
break;
case 63:
result = x>>3;
break;
case 64:
x=225x;//[(x<<4)-x]*[(x<<4)-x]
result = x+0x4b;
break;
case 65:
x=x*x;
result = x+0x4b;
break;
default:
result = x+0x4b;
break;
}
return result;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息