一个C语言程庄有两个源文件:main.c和test.c,其内容如下图所示。
在IA-32+Linux平台上执行上述程序,函数funct()对应汇编代码如下图所示。假定该函数开始执行时,R[esp]=0xbf000800,R[ebp]=0xbf000820,请回答下列问题。
执行第2行指令后,寄存器EBP中的内容事什么?(2分)
第4行缺失的汇编指令是什么?局部变量x和y所在存储单元的虚拟地址分别是什么?(4分)
执行scant()函数时,若从键盘输入-125和10,则funct()函数的返回值为多少?若函数funct()第4行写成“scant(%d%d\n,x,y);”则scant()和funct()两个函数的执行过程中分别可能会发生什么情况?(10分)
第12行指令是算术右移指令,在此设置该指令的目的是什么?(4分)
main.c和test.c中都有result变量,为何链接时不会发生链接错误?它们各自被分配在虚拟地址空间的哪个储存区域?(2分)
已知页大小为4KB,若采用4-路组相联的L1 data cache共有64组,主存块大小为64B,系统中只有该进程在执行,则执行第13行的idiv1指令时是否会发生数据cache缺失?该指令中的存储器操作数应装入L1 data cache的哪一组?(3分)
1 pushl %ebp
2 movl %esp,%esp
3 subl $48,%esp
4
5 movl %cax,8(%esp)
6 lcal -4(%esp), %cax
7 movl %cax,4(%esp)
8 movl $.LC0, (%esp)
9 call scanf
10 movl -4(%ebp), %cax
11 movl %cax,%edx
12 sarl $3},%edx
13 idivl -8(%ebp)
14 movl %cax,-12(%ebp)
15 movl -12(%ebp), %cax
16 leave
17 ret
查看答案和解析【26考研辅导课程推荐】:26考研集训课程,VIP领学计划,26考研VIP全科定制套餐(公共课VIP+专业课1对1) , 这些课程中都会配有内部讲义以及辅导书和资料,同时会有教研教辅双师模式对大家进行教学以及督学,并配有24小时答疑和模拟测试等,可直接咨询在线客服老师领取大额优惠券。
启航教育热门私房课
MORE小班面授 名额有限 抢先体验
编辑推荐
最新内容
姓名
手机号