首页 > 试题广场 >

考虑下面的源代码,其中M和N是用# define声明的常数:

[问答题]

考虑下面的源代码,其中M和N是用# define声明的常数:

long P [M] [N];
long Q [N] [M];
long snm_element(long i, long j) {
return P[i] [j]+Q[j] [i];
}

在编译这个程序中,GCC产生如下汇编代码:

long sum_element(long i,long j)
i in Xrdi,j in %rsi
sum_element:
  leaq   0(,%rdi,8),%rdx
  subq   %rdi,%rdx
  addq   %rsi,%rdx
  leaq   (%rsi,%rsi,4),%rax
  addq   %rax,%rdi
  movq   Q(,%rdi,8),%rax
  addq  P(,%rdx,8),%rax
   ret
运用逆向工程技能,根据这段汇编代码,确定M和N的值。

这道题你会答吗?花几分钟告诉大家答案吧!