欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    复旦大学计算机体系结构期末考试B卷汇编.docx

    • 资源ID:15265428       资源大小:19.67KB        全文页数:15页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    复旦大学计算机体系结构期末考试B卷汇编.docx

    1、复旦大学计算机体系结构期末考试B卷汇编(1)考虑下面这个for循环的汇编代码looper: pushl %ebp movl %esp, %ebp subl $16, %esp movl $0, -8(%ebp) movl $0, -4(%ebp) jmp .L2.L4: movl -4(%ebp), %eax sall $2, %eax addl 12(%ebp), %eax movl (%eax), %eax cmpl -8(%ebp), %eax jle .L3 movl -4(%ebp), %eax sall $2, %eax addl 12(%ebp), %eax movl (%eax

    2、), %eax movl %eax, -8(%ebp).L3: addl $1, -8(%ebp) addl $2, -4(%ebp).L2: movl -4(%ebp), %eax cmpl 8(%ebp), %eax jl .L4 movl -8(%ebp), %eax leave ret根据以上的汇编代码,完成相应的for循环C程序代码(注意该程序有返回值)。int looper(int n, int *a) int i; int x=0;for(i= 0 ; ix)/2分 x=ai;/ 2分 x+;/1分 _return x;/ 1分 (2)根据已有的结构(structure)和联合(

    3、union)的声明以及C函数void test(int i, s2 *bp)的IA32 汇编代码,推断出结构s1的完整声明和s2中CNT的值;之后再根据推断结果以及IA32汇编代码,推断补齐相应的C程序代码。下面是要使用到的结构和联合的声明,函数void test(int i, s2 *bp)及其IA32 汇编代码。struct s1 struct s2 union u1 int left; struct s1 *h; s1 aCNT; struct s2 *i; int right; char j; ; union u1 b; ; char c; ; void test(int i, s2

    4、*bp) int n=bp-left+bp-right; s1 *ap=&bp-ai; ap-xap-idx=n;其IA32汇编代码为:test: pushl %ebp movl %esp, %ebp subl $16, %esp movl 12(%ebp), %eax movl (%eax), %edx movl 12(%ebp), %eax movl 184(%eax), %eax leal (%edx,%eax), %eax movl %eax, -4(%ebp) movl 12(%ebp), %eax leal 4(%eax), %ecx movl 8(%ebp), %edx movl

    5、 %edx, %eax sall $2, %eax addl %edx, %eax sall $2, %eax leal (%ecx,%eax), %eax movl %eax, -8(%ebp) movl -8(%ebp), %eax movl (%eax), %edx movl -8(%ebp), %eax movl -4(%ebp), %ecx movl %ecx, 4(%eax,%edx,4) leave ret1. CNT=_9_/2分2. 写出s1的完整声明。_struct s1 int idx;/2分 int x4;/2分 _ _3. 对于下面左边的每个IA32 汇编代码,请在右

    6、边补全相应的C程序代码。(请注意下面的函数都需要返回值)A. proc1: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax movzbl 188(%eax), %eax popl %ebp retchar proc1(struct s2 *x)_return x-b.j;(4分)_B. proc2: pushl %ebp movl %esp, %ebp subl $16, %esp movl 8(%ebp), %eax movl 188(%eax), %eax movl (%eax), %eax movl %eax, -4(%ebp) movl 8(

    7、%ebp), %eax movl 188(%eax), %eax movl 184(%eax), %eax addl %eax, -4(%ebp) movl -4(%ebp), %eax leave retC. proc3: pushl %ebp movl %esp, %ebp subl $16, %esp movl 8(%ebp), %eax movl (%eax), %eax movl 188(%eax), %eax movzbl 192(%eax), %eax movb %al, -1(%ebp) movl 8(%ebp), %eax movl (%eax), %eax movzbl 1

    8、88(%eax), %eax andb %al, -1(%ebp) movzbl -1(%ebp), %eax leave retint proc2(struct s2 *x)_int a = x-b.i-left;/2分 a += x-b.i-right;/3分return a;(3分)_char proc3(union u1 *x)_char a = x-i-b.i-c;/2分 a &= x-i-b.j/3分return a;(3分)_(3)Pentium III的算术操作性能如下:操作执行时间发射时间整数加法11整数乘法41整数除法3636浮点加法31浮点乘法52浮点除法3838加载或存

    9、储(高速缓存命中)11考虑如下程序:int loop(int *a, int x, int n) int y=x*x; int i; for(i=0;in;i+) x=y*ai;取i,取y,再发射,共3个时钟周期;这里没迭代。 return x*y; 用GCC进行编译,得到如下汇编代码:.L2: movl %ecx,%eax imull (%esi,%edx,4),%eax incl %edx cmpl %ebx,%edx jl .L21.每次循环需要的时钟周期数是多少?3.0/4分2.通过使用编译选项-funroll -loops,我们可以在编译时进行4路循环展开,此方法可以加快loop的运

    10、行,解释原因。程序的循环次数变少,降低了循环的开销。即减少了y和ai的load需要的1个时钟周期。/6分(4)考虑如下一段程序:int counter=2;void handler(int sig) counter+;int count() signal(SIGCHLD, handler); int i, status; for(i=1; i0) counter+; while (waitpid(-1,&status,0)0); return counter; counter+=i; return counter;int main() printf(counter =%dn, count();

    11、 exit(0);问:1. 程序是否总是有相同输出?是/6分2. 如果第一问答案为”是”,给出此固定输出,如果答案为”否”,则列出所有可能输出。counter7counter7counter5/4分(5)请写出一段代码,父进程利用fork()函数创建一个子进程之后挂起,子进程什么也不做,睡眠5s后通过kill函数发送SIGALRM信号给父进程,再睡眠3s,然后以状态1退出。父进程在信号处理程序中,回收子进程,打印子进程的退出状态,之后以状态0退出。注意程序中用到的系统调用函数不必进行错误检查,用到的头文件已经给出。#include #include #include #include #inc

    12、lude void handler(int sig) int status; waitpid(-1,&status,0); printf(%dn,WEXITSTATUS(status); exit(0);int main() pid_t pid; signal(SIGALRM, handler); if(fork()=0) pid=getppid(); sleep(5); kill(pid,SIGALRM); sleep(3); exit(1); pause();sigal()-handler()2分fork() 1分kill()1分waitpid() 1分sleep() 1分WEXITSTA

    13、TUS 1分exit() 1分程序结构 2分(6)下面这个问题考察你如何将虚拟地址翻译成物理地址。我们做出如下假设: 这个存储器是按字节寻址的; 存储器访问是针对1字节的字的(不是4字节的字); 虚拟地址是16位长的; 物理地址是13位长的; 页面大小是1024字节; TLB是八路组相联,总共16个条目; 缓存是物理寻址、直接映射的,行大小为4字节,2路相联总共16个组。在下面的表格中,所有的数字均为16进制。TLB的内容和页表的前32页如下:TLBIndexTag PPN Valid009 4 112 2 110 0 103 5 105 7 113 1 010 3 018 3 0104 1

    14、00C 1 012 0 008 1 006 7 003 1 007 5 002 2 0Page TableVPN PPN ValidVPN PPN Valid00 6 101 5 002 3 103 4 104 2 005 7 106 1 007 3 008 5 109 4 00A 3 00B 2 00C 5 00D 6 00E 1 10F 0 010 0 111 5 012 2 113 4 014 6 015 2 016 4 017 6 018 1 119 2 01A 5 01B 7 01C 6 01D 2 01E 3 01F 1 02-way Set Associative CacheIn

    15、dexTag ValidByte0 1 2 3Tag ValidByte0 1 2 3012345(4)牌子响6自制饰品一反传统的饰品消费模式,引导的是一种全新的饰品文化,所以非常容易被我们年轻的女生接受。719 1(四)大学生对手工艺制品消费的要求15 01B 106 0(二)创业弱势分析07 0加拿大公司就是根据年轻女性要充分展现自己个性的需求,将世界各地的珠类饰品汇集于“碧芝自制饰品店”内,由消费者自选、自组、自制,这样就能在每个消费者亲手制作、充分发挥她们的艺术想像力的基础上,创作出作品,达到展现个性的效果。0D 111 016 1标题:大学生“负债消费“成潮流 2004年3月18日9

    16、9 11 23 11(3) 心态问题4F 22 EC 1100 02 04 0884 06 B2 9C43 6D 8F 0936 32 00 78A2 37 68 31大学生对手工艺制作兴趣的调研11 C2 11 332、消费者分析00 02F 10B 1(四)大学生对手工艺制品消费的要求12 005 01E 100 11E 199 11 23 1155 59 0B 4101 03 05 0784 06 B2 9C43 6D 8F 09A1 B2 C4 DEBB 77 33 0000 C0 0F 001. (1) 下面需要你描述虚拟地址的格式。请在表格下方标注出下列符号的表示范围。如果其中有符

    17、号在本题中不需要用到,请不要标注。VPO 虚拟页面偏移VPN 虚拟页号TLBI TLB索引号TLBT TLB标记 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 VPN: 15-10 VPO: 9-0/2分TLBT: 15-11 TLBI: 10/1分(2) 下面需要你描述物理地址的格式。请在表格下方标注下列符号的表示范围。PPO 物理页面偏移PPN 物理页号 CO 缓冲块内的字节偏移量 CI 高速缓存索引 CT 高速缓存标记 12 11 10 9 8 7 6 5 4 3 2 1 0PPN: 12-10 PPO: 9-0/2分CT: 12-5 CI: 4-2 CO:

    18、 1-0/2分2. 对于给定的虚拟地址,请你指出被访问的TLB条目,相对应的物理地址,以及返回的高速缓存字节值(用16进制表示)。并且请指出是否发生了LTB不命中,是否发生了缺页,是否发生缓存不命中。如果发生缓存不命中,在“返回的缓存字节”一栏中填“-”。如果发生缺页,在“PPN”栏中填入“-”并且空着C和D部分。(1) 虚拟地址: 0x81B6A. 虚拟地址格式(每格填一个bit) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 /1分1000000110110110B. 地址翻译 /各1分参数值VPN0x20 TLB索引0x0 TLB标记0x10 TLB命中?(Y/N)Y 缺页?(Y/N)N PPN0x0 C. 物理地址格式(每格填一个bit)/1分12 11 10 9 8 7 6 5 4 3 2 1 00000110110110D. 物理存储器引用 /各1分 参数值字节偏移0x2 缓存索引0x5缓存标记0x0D缓存命中?(Y/N)Y 返回的缓存字节0x00第七题1. 双层循环/10分,2. /10分算法改进/5分循环展开等方法 /5分


    注意事项

    本文(复旦大学计算机体系结构期末考试B卷汇编.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开