(CSAPP第三版系列)导航篇传送门
3.58写出等价的decode2的C代码。
/*rdi,rsi,rdx*/
long decode2(long x,long y,long z)
{
y = y - z;
x = x * y;
y = (y << 63) >> 63;
return x ^ y;
}
A. x:%rdi n:%rsi(%cl) result:%rax mask:%rdx
B. 初值: result = 0; mask = 1;
C. mask的测试条件:mask != 0;
D. mask的修改:mask = mask << n;
E. result的修改:result |= x & mask;
F. 填写C代码
long loop(long x,int n)
{
long result = 0;
long mask;
for(mask = 1;mask != 0;mask =