3.54(难度:1星)
将一段汇编代码转换为C代码
首先了解一些简单指令的意思:
subl:减
sall:左移(算术左移,但是与逻辑左移无区别)
sarl:算术右移
xorl:异或
imull:乘
接下来一行一行的翻译,根据题意,将代码返回值存放在寄存器%eax中,那么我们将返回值定义为a,代码如下:
int decode2(int x, int y, int z)
{
int a; //返回值
z=z-y;
a=z;
a=a<<15;
a=a>>15;
z=z^x //异或
a=a*z;
return a;
}