在下面的C函数中,我们对OP操作的定义是不完整的:
#define OP /* Unknown operator*/
long arith(long x) {
return x OP 8;
} 当编译时,GCC会产生如下汇编代码:
long arith(long x) x in %rdi arith: leaq 7(%rdi), %rax testq %rdi, %rdi cmovns %rdi, %rax sarq $3, %rax ret
A. OP进行的是什么操作?
B.给代码添加注释,解释它是如何工作的。
