2010年6月 计算机组织与系统结构 期终考试试卷
第 PAGE 3 页 共 5 页
考试科目名称 计算机系统基础 (A卷)
2015—2016学年第 1 学期 教师 路通 苏丰 唐杰 考试方式:开卷
系(专业) 计算机科学与技术 年级 班级
学号 姓名 成绩
题号
一
二
三
四
五
六
七
八
九
十
十一
十二
分数
一、简答题(每题4分,共20分)
1、DMA方式实现系统I/O的特点是什么?
DMA方式:I/O设备和内存间直接通过DMA硬件批量传输数据。
2、什么是陷阱指令?它的作用是什么?
用户程序需通过自陷指令向操作系统提供系统服务对应的编号来使用内核提供的相应服务。
3、解释在程序链接过程中需要进行重定位的原因?
4、请列举至少五种会导致异常控制流的原因。
如溢出、缺页、越界、非法指令、除数为0、堆栈溢出、断点设置、打印机缺纸、电源掉电、硬件故障、采用时间到等。
5、什么是快表?
活跃页表在高速缓存中的镜像。
/* test.c */1 23int val=0;4int add
/* test.c */
1
2
3int val=0;
4int add(int a, int b)
5{
6 int i=-1;
7 if(a>0)
8 i= a+b;
9 return i;
10}
/* main.c */
1 #include
2
3int add(int a, int b);
4int a[2]={-1, 3};
5float b[2] = {-1.5, -0.75}
6void main( )
7{
8 add(a[0],b[1]);
9 unsigned char val=a[0];
10printf(“val=%d\n”,val);
10}
请回答如下问题(提示:IA-32为小端方式,字长为32位,即sizeof(int)=4,虚拟地址空间中的只读数据和代码段、可读写数据段都按4KB边界对齐)
请简述从C语言源程序到可执行文件test的转换需要经过哪些步骤?(4分)
略
如图所示程序片段,已知数组a首址为0x080496dc,则0x080496e0到0x080496e3每个单元的内容依次是什么?假设数组b的首地址是0x080496e4,则0x080496e8到0x080496eb每个单元的内容依次是什么?变量val的机器值是多少?printf语句打印出的值是多少?(8分)
参考答案
在0x080496e0到0x080496e3这4个单元中存放的是3,3 =11B, 在机器中的32位原码表示。因为IA-32是小端方式,因此,在0x080496e0到0x080496e3这4个单元的内容依次为:03H、00H、00H、00H。(2分)
在0x080496e8到0x080496eb这4个单元中存放的是浮点数-0.75,3 = BF400000H,因为IA-32是小端方式,因此,在0x080496e8到0x080496eb这4个单元的内容依次为:00H、00H、40H、BFH。(2分)
Val的机器值是FFH,(2分)
prinft输出的值是255 (2分)
3、根据下图add函数反汇编结果画出其栈帧,要求分别用EBP和ESP标示栈帧底部和顶部并标出i的位置。(4分)
参考答案
ESP
ESP
sum的栈帧
EBP
EBP在P中的旧值
i
-4
-8
-12
如上图所示,cmpl指令的执行将会影响EFLAGS寄存器中哪些常用标志?根据当前程序的数据,add函数中cmpl指令的执行结果将如何影响下条jle指令?(10分)
参考答案
cmpl指令通过做减法来生成标志信息,其执行将影响EFLAGS寄存器中的OF、CF、ZF和SF这几位条件标志位。(4分)
因为a=-1,cmpl指令中的操作数M[R(%ebp)+8]实际上就是a,因此,cmpl指令实际上是在以下电路中实现“-1减0”的功能。如果“-1<=0”,则跳转到0x804843a处执行,否则执行0x804842f语句。(6分)
5、地址0x804842f处的mov指令中,源操作数采用什么寻址方式?0x8048435、0x8048437处的汇编代码对应的c代码是哪一句?leave指令和ret指令执行的操作是什么?(8分)
参考答案
基址+位移 (2分)
i = a + b; (2分)
leave 执行的是 movl %ebp, %esp
popl%ebp