《编译原理-龙书》练习第8章

龙书D3D11习题答案(第八章) 以下答案仅供参考,有错欢迎留言。 Chapter 8: Texturing 阅读详情

代码生成:

中间表示形式+符号表 -> 指令选择,寄存器分配和指派,指令排序


8.2 目标语言

8.2.1 1) x = 1

LD   r, #1

ST   x, r

3)x = a+1

LD    r, a

ADD r, #1

ST    a, r

5)x = b*c

LD    R1, b

MUL R1, c

ST     x, R1

8.2.2 1)x=a[i] y=b[j] a[i]=y b[j]=x

LD    R0 i

MUL R0, 4

LD R1 a(R0)

LD    R0 j

MUL R0, 4

LD R2 b(R0)

ST a[i] R2

ST b[j] R1

2) x=a[i] y=b[i] z=x*y

LD    R0 i

MUL R0, 4

LD    R1 a(R0)

MUL R1 b(R0)

ST    z R1

8.2.3 y=*q q=q+4 *p=y p=p+4

LD    R1 q

LD    R2 0(R1)

ADD R1 #4

ST    q R1

LD    R1 p

ST    0(R1) R2

ADD R1 #4

ST    p R1

8.2.4 

LD     R1, x

LD     R2, y

SUB  R1-R2

BLTZ R1, M   // M为L1生成第一条指令位置

8.2.5

LD R1, s

ST R1, 0

LD R2, i

ST R1, 0

LD R3, n

L1: CMP R2, R3

JG L2

ADD R1, R2

ADD R2, #1

GOTO L1

L2:

8.2.6 1) 2+2+1+2

8.3 目标代码中的地址

8.3.1 没有理解题中return什么意思,下面没有考虑return。假设这是main中一段代码

100:  LD   SP,  #600

108:  ACTION1

128:  ADD SP, SP, #msize

136:  ST 0(SP), #152

144:  BR 300

152:  SUB SP, SP #msize

160:  ADD SP, SP #msize

168:  ST 0(SP), #184

176:  BR 400

184:  SUB SP, SP #msize

192:  ADD SP, SP #msize

200:  ST 0(SP), #216

208:  BR 500

216:  SUB SP, SP #msize

300: ACTION

320: BR *0(SP)


400: ACTION

420: BR *0(SP)


500: ACTION

520: BR *0(SP)

8.3.2与8.3.3 8.3中没有类似这样的例子,栈式分配的话重要的是地址的确定,可以将这些语句当作函数中第一条语句生成代码

8.4 基本块和流图

8.4.1 一个二重循环一个三重循环,二重循环三地址语句类似于图8-7上半部分,流图类似于图8-9B1-B4,循环包括例8.9中1和3,下面练习一下三重循环

1)

1  i = 0

2  j = 0

3  k = 0

4  t1 = n*i

5  t2 = t1 + j

6  t3 = t1 + k

7  t4 = n*k

8  t5 = t4 + j

9  t6 = a[t3] * b[t5]

10 c[t2] = c[t2] + t6

11 k = k + 1

12 if(k<n) goto 4

13 j = j + 1

14 if(j<n) goto 3

15 i = i + 1

16 if(i<n) goto 2

2)三重循环流图:

B1 1

B2 2

B3 3

B4 4-12

B5 13-14

B6 15-16

3)循环有3个:B4自身,B3B4B5,B2B3B4B5B6

8.4.2 类似,略

8.5 基本块的优化

8.5.1

              a1

       +(e)  *(d,b)

a0     b0       c0

8.5.2

1)只有a活跃,则第一行可以优化掉

2)abc活跃,则同样第一行d=b*c可以优化掉

8.5.3 B6 原理类似8.5.1,略

8.5.4 B3 原理类似8.5.1,略

8.5.5

1) a[i]=b  a设置为不活跃,b设置为活跃,影响所有对数组a的引用

2) a=b[i]  a设置为不活跃,b设置为活跃,影响所有对数组b的引用

3) a=*b   a设置为不活跃,b设置为活跃,从后往前扫描过程中,所有对b的引用都是活跃的

4) *a=b   a设置为不活跃,b设置为活跃,从后往前扫描过程中,所有对a的引用都是不活跃的

8.5.6 在

编译原理龙书第一作业答案 编译原理龙书第一作业答案 练习1.6.1 :对图1-13a中的块结构的C代码,指出赋给w、x、y和z的值 答案: w=13,x=11,y=13,z=11。可以把图中块结构看作块B1,第一个大括号内是块B2,第二个内是块B3。块B2有变量j的声明,因此w的定义中对j的使用被绑定到这个声明,没有i的声明,只能指向块B1中i的声明,同时B2重新定义该声明的i值为6,所以w=6+7=13。由于x在... 阅读详情

相关推荐

编译原理三大经典:龙书、虎、鲸 3 本核心差异与学习路径选择指南

本文深入解析编译原理三大经典教材——龙书、虎和鲸的核心差异与适用场景。龙书侧重理论体系,适合学术研究;虎注重实践,适合项目开发;鲸专注高级优化,适合专业进阶。根据学习目标(考研、就业或交叉领域),提供详细的学习路径建议和资源搭配方案,帮助读者高效掌握编译原理核心技术。

weixin_30875157的博客 579

第二版龙书习题答案

龙书”。龙书是Alfred V. Aho等人于1986年出版的,由于出版年代较早,其中包含部分过时的技术并且没有反映一些新的编译技术。新编的《编译原理》抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术

编译原理部分习题答案,龙书第二版,1-8都有(无2

编译原理部分习题答案,龙书第二版,1-8都有

编译原理龙书):第八章部分题目参考答案

以下题目答案源自编译原理课程作业。对应于原第八章题目。

乔卿的博客 4938

编译原理龙书 第二课后题答案

Exercises for Section 2.2 2.2.1 Consider the context-free grammar: S -> S S + | S S * | a Show how the string aa+a* can be generated by this grammar. Construct a parse tree for this string. What l...

韬霖笔记 1万+

编译原理-龙书练习第5

这一重要的是2个概念: SDD:语法制导定义,由一个上下文无关文法和属性及规则组成 SDT:语法制导翻译,是在其产生式体内嵌入了程序片段的一个上下文无关文法 5.1 语法制导定义 图5.5中计算过程比较复杂,看完5.2节求值顺序就会理解更多 5.1.1比较简单,就是自底向上语法树中加上 .val就行 5.1.2  5.2 SDD的求值顺序 5.2.1 保证下表中从左到右排就行

buck84的专栏 1万+

编译原理-龙书练习第3

3.1 词法分析器的作用 3.1.1          float     limitedSquare     (      x     )     {     float     x     ;      return     (     x     =     10.0     )     ?     100     :     x     *     x     ;      } 除

buck84的专栏 1万+

编译原理-龙书练习第4

4.2 上下文无关文法 **4.2.7节中L={a^nb^n|n>=1}怎么用文法表示? S -> aAb A -> ab|ε 4.2.1 1) E -> EE*  -> EE+E* -> aa+a* 左到右依次a 2) 与1)一样,只是最后一步右到左依次a 3)       E       E       E  *  E E + id id        id 4)无

buck84的专栏 3万+

【亲测免费】 编译原理龙书)部分答案

编译原理龙书)部分答案 去发现同类优质开源项目:https://gitcode.com/ 资源描述 本仓库提供了《编译原理》(龙书)的部分答案,涵盖了前9的部分课后习题。这些答案旨在帮助学习者更好地理解和掌握编译原理的相关知识,同时也为自学者提供了参考和指导。 内容概述 节范围:前9 内容类型:部分课后习题答案 适用对象:学习编译原理的学生、自学者 使用说明 下载资源:请直接下载本仓...

gitblog_09707的博客 400

编译原理第二版龙书习题解答(最全_格式已改为手机可查看)

# Exercises for Section 2.2 ### 2.2.1 Consider the context-free grammar: S -> S S + | S S * | a 1. Show how the string `aa+a*` can be generated by this grammar. 2. Construct a parse tree for this string. 3. What language does this grammar generate? Justify your answer. #### Answer 1. `S` -> `S` S * -> `S` S + S * -> a `S` + S * -> a a + `S` * -> a a + a * ………………

Frank D. Luna龙书第二版第8习题3-5答案

Introduction to 3D Game Programming with DirectX 9 0c A Shader Approach第8习题3 5的答案 只给了源码 使用方式参见ReadMe txt文件

编译原理第八章 符号表 课后标准答案 陈火旺编著

1.什么是符号表?符号表有哪些重要作用? 2.符号表的表项常包括哪些部分?各描述什么? 3.符号表的组织方式有哪些?它的组织取决于哪些因素?

编译原理————龙书答案

编译原理 龙书 答案编译原理

龙书编译原理课后答案

龙书编译原理课后答案

编译原理-龙书练习第7

7.1 存储组织 7.2 空间的栈式分配 7.2.4栈中的变长数据,在c语言中所有变长数据都在堆中。 7.2.1 1)这种情况下快排效果最差O(n*n) 2)栈中最多状态情况: P(1, 9) P(1, 8) ... P(1,2) P(1,1) 共9个 7.2.3  1)              f(5)                  f(4)

buck84的专栏 5762

编译原理部分习题答案

编译原理部分习题答案 去发现同类优质开源项目:https://gitcode.com/ 介绍 此仓库提供了《编译原理》(龙书)第二版的习题答案,涵盖了第1至第8的内容,但其中不包括第2的答案。这些习题答案可以帮助读者更好地理解和掌握编译原理的相关知识。 内容 第1 习题答案 第3 习题答案 第4 习题答案 第5 习题答案 第6 习题答案 第7 习题答案 第8 习题答案 请注意...

gitblog_06774的博客 305

编译原理】一篇就够了——学习笔记与课程实验超详细整理

编译原理学习笔记,一篇就够!,对应龙书的1-9内容,详细介绍了相关方法原理与步骤。同时整理基于Java的词法分析与语法分析的课程实验

一棵灬大树的博客 1万+

Hanjst汉吉斯特与龙书编译原理

时间过得时而飞快,时而缓慢。我们人类已经与新冠肺炎疫情奋战了快两年了,好消息是随着疫苗的不断改进和持续的普及防护能力在提升,随着口服特效药面世和不断优化升级人类也不再不堪一击了。 就像不断改进和增强的疫苗和特效药一样,Hanjst汉吉斯特????(https://ufqi.com/dev/hanjst/ )也在持续的优化改进升级。回顾上一次更新是在 2021年3月份:Hanjst汉吉斯特????优化升级开发者模式(https://ufqi.com/blog/hanjst-updt-with-safari-

u012553625的博客 190
上一篇: SecureCRT中文乱码、复制粘贴乱码解决办法
下一篇: 编译原理学习总结
buck
博客等级 码龄14年 185粉丝 127原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值