举一反三
- 在空栈状态下,以下代码执行完成后,esp指向哪里?()<br/>pushl $8<br/>movl %esp,%ebp<br/>pushl %esp<br/>pushl $8<br/>addl $4 ,%esp<br/>popl %esp A: . 起始位置-2; B: . 起始位置-4; C: . 起始位置+4; D: . 起始位置;
- 指令<br/>movl (%esp),%eax<br/>addl $4,%esp<br/>可以用一下列哪一个指令表示?() A: . pushl %eax; B: . popl %eax; C: . pushl %esp; D: . popl %esp
- 第22题中caller函数对应的机器级代码如下:1 pushl %ebp2 movl %esp, %ebp3 subl $24, %esp4 movl $100, -12(%ebp)5 movl $200, -8(%ebp)6 movl -8(%ebp), %eax7 movl %eax, 4(%esp)8 movl -12(%ebp), %eax9 movl %eax, (%esp)10 call add11 movl %eax, -4(%esp)12 movl -4(%ebp), %eax13 leave14 ret假定caller的调用过程为P,对于上述指令序列,以下叙述中错误的是()。 A: 第1条指令将过程P的EBP内容压入caller栈帧 B: 第2条指令使EBP内容指向caller栈帧的底部 C: 第3条指令将栈指针ESP向高地址方向移动,以生成当前栈帧 D: 从上述指令序列可看出,caller函数没有使用被调用者保存寄存器
- 第2题中的caller函数对应的机器级代码如下:[br][/br] 1 pushl %ebp 2 movl %esp, %ebp 3 subl $24, %esp 4 movl $100, -12(%ebp) 5 movl $200, -8(%ebp) 6 movl -8(%ebp), %eax 7 movl %eax, 4(%esp) 8 movl -12(%ebp), %eax 9 movl %eax, (%esp) 10 call add 11 movl %eax, -4(%ebp) 12 movl -4(%ebp), %eax 13 leave 14 ret 假定caller的调用过程为P,对于上述指令序列,以下叙述中错误的是( )。 A: 第2条指令使BEP内容指向caller栈帧的底部 B: 从上述指令序列可看出,caller函数没有使用被调用者保存寄存器 C: 第1条指令将过程P的EBP内容压入caller栈帧 D: 第3条指令将栈指针ESP向高地址方向移动,以生成当前栈帧
- 指令<br/>subl $4,%esp<br/>movl %eax,(%esp)<br/>可以用一下列哪一个指令表示?() A: . pushl %eax; B: . pop %eax; C: . push %esp; D: . pop %esp
内容
- 0
在第3题中的caller函数对应的机器级代码表示如下: 1 pushl %ebp 2 movl %esp, %ebp[br][/br] 3 subl $24, %esp[br][/br] 4 movl $100, -12(%ebp)[br][/br] 5 movl $200, -8(%ebp)[br][/br] 6 movl -8(%ebp), %eax[br][/br] 7 movl %eax, 4(esp)[br][/br] 8 movl -12(%ebp), %eax[br][/br] 9 movl %eax, (%esp)[br][/br] 10 call add[br][/br] 11 movl %eax, -4(%ebp)[br][/br] 12 movl -4(%ebp), %eax[br][/br] 13 leave[br][/br] 14 ret 假定caller的调用过程是P,对于上述指令序列,以下叙述中错误的是()。 A: 第1条指令将过程P的EBP内容压入caller栈帧 B: 第2条指令使EBP内容指向caller栈帧的底部 C: 第3条指令将栈指针ESP向高地址方向移动,以生成当前栈帧 D: 从上述指令序列可以看出,caller函数没有使用被调用者保持寄存器
- 1
IA-32中指令“pushl%ebp”的功能是()。 A: R[esp]←R[esp]-4,M[R[esp]]←R[ebp] B: R[esp]←R[esp]+4,M[R[esp]]←R[ebp] C: M[R[esp]]←R[ebp],R[esp]←R[esp]-4 D: M[R[esp]]←R[ebp],R[esp]←R[esp]+4
- 2
假定当前是32位x86机器,EBP寄存器的值为12(内存地址),ESP寄存器的值为8(内存地址),执行如下代码ESP寄存器的值是()。[br][/br] pushl %ebp A: 4 B: 8 C: 12 D: 16
- 3
假定当前是32位x86机器,EBP寄存器的值为12(内存地址),ESP寄存器的值为8(内存地址),执行如下代码ESP寄存器的值是()。[br][/br] pushl %ebp
- 4
假定当前是32位X86机器,ebp寄存器的值为12,esp寄存器的值为8,执行完如下代码后esp的值是多少?(答案单位为字节,填入数值即可)<br/>pushl %ebp <br/>______