考虑下面的源代码,其中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的值。