2010年6月 计算机组织与系统结构 期终考试试卷
考试科目名称 计算机系统基础 (A卷)
2014—2015学年第 1 学期 教师 袁春风 路通 苏丰 唐杰 汪亮 考试方式:开卷 系(专业) 计算机科学与技术 年级 2013 班级 学号 姓名 成绩
题号 分数
一 二 三 四 五 六 七 八 九 十 十一 十二 一个C语言程序有两个源文件:main.c和test.c,它们的内容如下图所示。
/* main.c */ 1 #include
( 提示: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函数中的printf语句所对应的指令为“call 8048300
十三、简述计算机系统层次结构。要求字数在200左右。(10分)
第 5 页
共 9 页