期中总结(部分测试及答案)

下面哪条指令的寻址方式是直接寻址方式?

  1. movl %eax, %edx

  2. movw $0x123, %ax

  3. movb 0x12, %ah

  4. movl (%ebx), %edx

 

  • A.

    3

  • B.

    2

  • C.

    1

  • D.

    4

正确答案: 
 

与下面两条指令等价的指令是():

    pushl %ebp 

    movl %esp, %ebp

    

  1. popl

  2. ret

  3. leave

  4. enter

    

  • A.

    1

  • B.

    2

  • C.

    3

  • D.

    4

正确答案: 
 
判断(1分)

冯诺依曼体系结构的核心思想是存储程序计算机。

  • A.
    ×
  • B.
正确答案: 
4
判断(1分)

在32位x86 CPU中,我们使用push和pop指令实现入栈和出栈,popl指令可以使得esp寄存器的值增加4。

  • A.
  • B.
    ×
正确答案: 
5
判断(1分)

32 位x86 CPU中,cs:eip指向要执行的指令地址,所以想执行0x123处的代码,我们可以通过mov $0x123, %eip指令来跳转。

  • A.
    ×
  • B.
正确答案: 
6
填空(1分)

假定当前是32位X86机器,ebp寄存器的值为12,esp寄存器的值为8,执行完如下代码后esp的值是多少?

 

  1. pushl %ebp
正确答案:4
解析: esp总是指向栈顶,在压栈时esp先减4
7
填空(1分)

假定当前是32位x86机器,eax寄存器的值为0x1234,ebx寄存器的值为0x4321,执行完如下代码后ebx的值是多少?

movl %eax, %ebx

 

正确答案:0x1234
8
填空(1分)

假定当前是32位X86机器,函数的返回值默认使用哪个寄存器来返回给上级函数?

正确答案:eax 或 EAX 或 %eax

 

函数调用堆栈与mykernel实验基础测试

 

已经超过规定的测试次数或提交截止时间已过。你可以作为自我学习进行测验,但提交的结果将无法获得学分。
1
单选(1分)

我们课程内容提到的计算机工作的三个法宝不包含下面哪一项:

1. 存储程序计算机

2. 函数调用堆栈

3. 中断机制

4. CPU指令

  • A.

    1

  • B.

    3

  • C.

    2

  • D.

    4

正确答案: 
2
判断(1分)

32位x86 计算机中,cs: eip总是指向地址连续的下一条指令.

  • A.
    ×
  • B.
正确答案: 
解析:顺序执行总是指向地址连续的下一条指令,有分支/跳转时不是。
3
判断(1分)

Linux中,可以使用objdump工具进行反汇编。

  • A.
    ×
  • B.
正确答案: 
4
判断(1分)

中断信号产生后,保存现场和恢复现场由CPU硬件单独完成。

  • A.
    ×
  • B.
正确答案: A
5
判断(1分)

movl 0xc(%ebp), %eax 这条指令的作用等价于 eax = *(int32_t * )(ebp + 12).

  • A.
    ×
  • B.
正确答案: B
6
判断(1分)

mykernel实验中,时钟中断处理函数是void my_timer_handler(void)。

  • A.
  • B.
    ×
正确答案: 
7
填空(1分)

32位x86 计算机中,在形成函数调用堆栈时,使用哪个寄存器指向栈底?

 
正确答案:ebp 或 EBP
8
填空(1分)

32位x86的Linux系统中,函数调用约定使用__stdcall方式, 调用f(x,y,z)时,需要把参数压栈,首先压入的参数是x,y,z中的哪一个?

 
正确答案:z