如下是一个 c 语言程序及其对应的汇编代码32 位机小端环境下编译请参照汇编代码完成 c 程序的空缺部分。c 语言程序:#include stdioh#define X 16#define Y 1 int array1XY;int array2X;int testint sum= 2 ;int i=0j=0k=0;fori=1j=2;iX && jY;i++k= 3 ;array2i+= 4 ;j
c 语言程序应填空的部分:
- k=array1[i][j];
- array2[i]+=k;
- return sum;
解释:
-
根据汇编代码中的 movl %eax, -8(%ebp) 可知,k 存储在 -8(%ebp) 的位置上,而根据 C 语言程序中的 array1[i][j],可知 k 的值应该是 array1[i][j],因此需要填写 k=array1[i][j]。
-
根据汇编代码中的 movl array2(,%eax,4), %edx 和 movl %edx, array2(,%eax,4) 可知,array2[i] 存储在 array2(,%eax,4) 的位置上,而根据 C 语言程序中的 array2[i]+=k,可知需要将 k 加到 array2[i] 上,因此需要填写 array2[i]+=k;。
-
根据汇编代码中的 movl $6, -12(%ebp) 可知,sum 存储在 -12(%ebp) 的位置上,而根据 C 语言程序中的 return sum;,可知需要返回 sum 的值,因此需要填写 return sum;。
原文地址: https://www.cveoy.top/t/topic/gSgr 著作权归作者所有。请勿转载和采集!