原题目:
**3.63 伪代码分析:
x rdi ;n rsin=n-0x3c(60);if(n>5){-->4005c3}else{goto:*(8n+0x4006f8)n=0 : 0x4006f8 -->0x4005a1n=1 : 0x400700 -->0x4005c3n=2 : 0x400708 -->0x4005a1n=3 : 0x400710 -->0x4005aan=4 : 0x400718 -->0x4005b2n=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+0x4breturn 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;}