第三章家庭作业

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;
}
原文地址:https://www.cnblogs.com/shadow135211/p/4913903.html