long decode(long x,long y,long z);
GCC产生如下代码:
subq %rdx,%rsi
imulq %rsi,%rdi
movq %rsi,%rax
salq $63,%rax
sarq $63,%rax
xorq $63,%rax
ret
参数x,y,z通过寄存器%rdi,%rsi,%rdx传递。代码将返回值存放在寄存器%rax中,写出等价于上述汇编代码的decod的C代码。
long decode(long x,long y,long z);
GCC产生如下代码:
subq %rdx,%rsi
imulq %rsi,%rdi
movq %rsi,%rax
salq $63,%rax
sarq $63,%rax
xorq $63,%rax
ret
参数x,y,z通过寄存器%rdi,%rsi,%rdx传递。代码将返回值存放在寄存器%rax中,写出等价于上述汇编代码的decod的C代码。
z = y - z;
y = x * y;
int rax = y;
rax = rax << 63;
rax = rax << 63;
rax = rax ^ 63;
return rax;