题目内容

在第3题中的caller函数对应的机器级代码表示如下:1pushl %ebp2movl %esp, %ebp3subl $24, %esp4 movl $100, -12(%ebp)5 movl $200, -8(%ebp)6movl -8(%ebp), %eax7 movl %eax, 4(esp)8 movl -12(%ebp), %eax9 movl %eax, (%esp)10 call add11 movl %eax, -4(%ebp)12 movl -4(%ebp), %eax13 leave14 ret假定caller的调用过程是P,对于上述指令序列,以下叙述中错误的是()。

A. 第1条指令将过程P的EBP内容压入caller栈帧
B. 第2条指令使EBP内容指向caller栈帧的底部
C. 第3条指令将栈指针ESP向高地址方向移动,以生成当前栈帧
D. 从上述指令序列可以看出,caller函数没有使用被调用者保持寄存器

查看答案
更多问题

对于第3题的caller函数和第4题给出的对应机器级代码,以下叙述中错误的是()。

A. 变量t1和t2的有效地址分别为R[ebp]-12和R[ebp]-8
B. 变量t1所在的地址高(或大)于变量 t2所在的地址
C. 参数t1和t2的有效地址分别为R[esp]和R[esp]+4
D. 变量t1所在的地址低(或小)于变量 t2所在的地址

对于第3题的caller函数和第4题给出的对应机器级代码,以下叙述中错误的是()。

A. leave指令用于恢复EBP的旧值,并不会改变ESP的内容
B. 执行第10条指令的过程中,会把第11条指令的地址压入栈顶
C. 执行第11条指令时,add函数的返回值已经在EAX中
D. 变量sum的有效地址为R[ebp]-4

以下有关递归过程调用的叙述中,错误的是()。

A. 可能需要执行递归过程很多次,因而时间开销大
B. 每次递归调用都会生成一个新的栈帧,因而空间开销大
C. 每次递归调用在栈帧中保持的返回地址都不相同
D. 递归过程第一个参数的有效地址为R[ebp]+8

以下关于if (cond_expr)then_statementelseelse_statement选择结构对应的机器级代码表示的叙述中,错误的是()。

A. 对应的then_statement 的代码一定在对应else_statement的代码之前
B. 一定包含一条“无条件转移”指令
C. 一定包含一条“条件转移”指令
D. 计算cond_expr的代码段一定在条件转移指令之前

答案查题题库