好文档 - 专业文书写作范文服务资料分享网站

计算机组成原理_南京大学期末考题

天下 分享 时间: 加入收藏 我要投稿 点赞

2010年6月 计算机组织与系统结构 期终考试试卷

考试科目名称 计算机系统基础 (A卷)

2014—2015学年第 1 学期 教师 袁春风 路通 苏丰 唐杰 汪亮 考试方式:开卷 系(专业) 计算机科学与技术 年级 2013 班级 学号 姓名 成绩

题号 分数

一 二 三 四 五 六 七 八 九 十 十一 十二 一个C语言程序有两个源文件:main.c和test.c,它们的内容如下图所示。

/* main.c */ 1 #include 2 3 int sum(); 4 int a[4]={-1, ,2, 3}; 5 extern int val; 6 void main( ) 7 { 8 val=sum(); 9 printf(“sum=%d\\n”,val); 10 } /* test.c */ 1 extern int a[]; 2 3 int val=0; 4 int sum() 5 { 6 int i; 7 for (i=0; i<4; i++) 8 val += a[i]; 9 return val; 10 } 假设在IA-32/Linux平台上用GCC编译驱动程序处理,main.c和test.c的可重定位目标文件名分别是main.o和test.o,生成的可执行文件名为test。回答下列问题或完成下列任务。

( 提示:IA-32为小端方式,字长为32位,即sizeof(int)=4,虚拟地址空间中的只读数据和代码段、可读写数据段都按4KB边界对齐)

一、从C语言源程序到可执行文件test的转换需要经过哪些步骤?(4分)

二、已知数组a首址为0x080496dc,则0x080496e0到0x080496e3每个单元的内容依次是什么?假设数组a的类型为float,则0x080496e0到0x080496e3每个单元的内容依次是什么?(6分)

第 1 页

共 9 页

2010年6月 计算机组织与系统结构 期终考试试卷

三、使用“objdump –d test”得到sum函数的反汇编结果如下,从反汇编结果可看出IA-32是CISC还是RISC?为什么?(2分)

四、根据sum函数反汇编结果画出其栈帧,要求分别用EBP和ESP标示栈帧底部和顶部并标出i的位置。(4分)

五、cmpl指令的执行将会影响EFLAGS寄存器中哪些常用标志?当i=4时,sum函数中cmpl指令的执行结果将如何影响下条jle指令?(10分) ZF/CF/SF/OF/AF/PF状态标识符

4-3 状态标识符全为0 zf=0,sf异或of为0,jle不执行跳转 jle L 可能跳转情况:1.zf=1(相等)、2.sf异或of为1(小于)

第 2 页

共 9 页

2010年6月 计算机组织与系统结构 期终考试试卷

六、地址0x804845a处的mov指令中,源操作数采用什么寻址方式?其中,EAX寄存器存放的是哪

个变量i?为何比例因子为4?如何计算源操作数的有效地址EA:4*eax+0x080496dc?源操作数的访问过程需要经过哪些步骤?从有效地址得到EA,用DS查表(GDT全局描述表)获得基地址与EA相加得到线性地址LA(虚拟地址),LA获取PA(第六章)(瞎编)通过LA获取页表,查表获取信息与LA相加得到PA(物理地址)(要求从有效地址计算开始进行简要说明,包括何时判断及如何判断TLB缺失、缺页和cache缺失等,字数在300~400字左右)(20分)

七、画出test的一个进程对应的虚拟地址空间。要求根据sum函数的反汇编结果,给出只读数据和代码段

的起始地址、可读写数据段的起始地址,并说明符号a、val、sum分别定义在哪个段内。(10分)

第 3 页

共 9 页

2010年6月 计算机组织与系统结构 期终考试试卷

八、使用“objdump –d test”得到main函数的反汇编结果如下。已知分页时页大小为4KB,主存与cache

交换的主存块大小为64B,则在执行test程序过程中,对于sum函数来说,访问指令的cache命中率是多少?(10分)

九、填写下表中各符号的情况,说明每个符号是否出现在test.o的符号表(.symtab节)中,如果是的话,

进一步说明定义该符号的模块是main.o还是test.o、该符号的类型是全局、外部还是本地符号、该符号出现在test.o中的哪个节(.text、.data或.bss)。(6分)

符号 a val sum i

在test.o的符号表中?

在 在 在 不在

定义模块 main.o test.o

test .o /

符号类型 extern global global /

节 .data .data .text /

第 4 页

共 9 页

2010年6月 计算机组织与系统结构 期终考试试卷

九、使用“objdump –d test.o”得到sum函数的反汇编结果如下。对照在可重定位文件test.o和可执行文件

test中的两个sum函数的反汇编结果,说明在哪些指令中进行了重定位(可在相应指令下方划线或给出相应指令所在的位移量)。(4分)

十一、为什么在main.c的开头需加“#include ”? 为什么main.c中没有定义printf()函数,也没它的原型声明,但main()函数引用它时没有发生错误?为什么printf()函数中未指定字符串输出目标,但执行test程序后会在屏幕上显示字符串?(4分)

十二、main函数中的printf语句所对应的指令为“call 8048300”。简述从执行该指令开始到在屏幕上显示出“sum=-96”为止的大概过程。要求字数在300左右。(10分)

十三、简述计算机系统层次结构。要求字数在200左右。(10分)

第 5 页

共 9 页

计算机组成原理_南京大学期末考题

2010年6月计算机组织与系统结构期终考试试卷考试科目名称计算机系统基础(A卷)2014—2015学年第1学期教师袁春风路通苏丰唐杰汪亮考试方式:开卷系(专业)计算机科学与技术年级2013班级学号姓名成绩题号
推荐度:
点击下载文档文档为doc格式
6nysl0brjr9acj39qpyw5s23r4b08q00et5
领取福利

微信扫码领取福利

微信扫码分享