- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
习 题
1. 给出以下概念的解释说明。
机器指令2. 简单回答下列问题。
(1)?(2)?
(3)?(4)?(5)?..........
要求回答下列问题或完成下列任务。
(1)给出每条汇编指令的注释,并说明为什么C代码只有一个if语句而汇编代码有两条条件转移指令。
(2)按照书中图3.22给出的“if () goto …”语句形式写出汇编代码对应的C语言代码。
13.
14..
16.
回答下列问题:函数sw中的switch语句处理部分标号的取值情况如何?标号的取值在什么情况下执行default分支?哪些标号的取值会执行同一个case分支?
17..“%x %x”, x, y);
4 return x-y;
5 }
函数funct对应的汇编代码如下:
1 funct:
2 push l %ebp
3 movl %esp, %ebp
4 subl $40, %esp
5 leal -8(%ebp), %eax
6 movl %eax, 8(%esp)
7 leal -4(%ebp), %eax
8 movl %eax, 4(%esp)
9 movl $.LC0, (%esp) //将指向字符串“%x %x”的指针入栈
10 call scanf //假定scanf执行后x=15,y=20
11 movl -4(%ebp), %eax
12 subl -8(%ebp), %eax
13 leave
14 ret
假设函数funct开始执行时,R[esp]=0xbc000020,R[ebp]=0xbc000030,执行第10行call指令后,scanf从标准输入读入的值为0x16和0x100,指向字符串“%x %x”的指针为0x804c000。回答下列问题或完成下列任务。
(1)执行第3、10和13行的指令后,寄存器EBP中的内容分别是什么?
(2)执行第3、10和13行的指令后,寄存器ESP中的内容分别是什么?
(3)局部变量x和y所在存储单元的地址分别是什么?
(4)画出执行第10行指令后funct的栈帧,指出栈帧中的内容及其地址。
19.efunc的C语言代码框架如下:
1 int refunc(unsigned x) {
2 if ( )
3 return ;
4 unsigned nx = ;
5 int rv = refunc(nx) ;
6 return ;
7 }
上述递归函数过程体对应的汇编代码如下:
1 movl 8(%ebp), %ebx
2 movl $0, %eax
3 testl %ebx, %ebx
4 je .L2
5 movl %ebx, %eax
6 shrl $1, %eax
7 movl %eax, (%esp)
8 call refunc
9 movl %ebx, %edx
10 andl $1, %edx
11 leal (%edx, %eax), %eax
12 .L2:
……
ret
根据对应的汇编代码填写C代码中缺失部分,并说明函数的功能。
20..] movw (%edx, %ecx, 2), %ax S[10] S[i+2] short * AS+2*i+4 leal 4(%edx, %ecx, 2), %eax S[i]-S S[4*i+4] *(S+i-2)
22...i, j, t;
3 for (i = 0; i M; i++)
4 for (j = 0; j M; j++) {
5 t = a[i][j];
6 a[i][j] = a[j][i];
7 a[j][i] = t;
8 }
9 }
已知采用优化编译(选项-O2)后函数trans_matrix的内循环对应的汇编代码如下:
1 .L2:
2 movl (%ebx), %eax
3 movl (%esi, %ecx, 4), %edx
4 movl %eax, (%esi, %ecx, 4)
5 addl $1, %ecx
6 movl %edx, (%ebx)
7 addl $76, %ebx
8 cmpl %edi, %ecx
9 jl .L2
根据上述汇编代码,回答下列问题或完成下列任务。
(1)M的值是多少?常数M和变量j分别存放在哪个寄存器中?
(2)写出上述优化汇编代码对应的函数trans_matrix的C代码。
25.假设结构类型node的定义、函数np_
文档评论(0)