首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无论我用三位地址代码做对还是错?

无论我用三位地址代码做对还是错?
EN

Stack Overflow用户
提问于 2022-06-27 15:51:27
回答 1查看 54关注 0票数 -2

今天,我在大学里完成了我的编译器建设期末论文。期末论文包括一个问题,要求我把一个for循环转换成3地址代码。它要求我转换的功能是:

代码语言:javascript
复制
for(i=1;i<=10;i++) x=y+z

因此,我进行了循环展开,并将给定的语句转换为等效表达式:

代码语言:javascript
复制
x=(y+z)^10

然后,我对转换后的代码做了三地址码:

如果是正确的,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2022-06-29 16:36:10

你的转换代码错了。

在最初的版本中,x不依赖于x的过去版本,这使得for循环死代码和循环展开无用,就像@Peter所说的那样。如果您正在寻找正确的答案,则正确的非优化答案将是:

代码语言:javascript
复制
(0) i=1
(1) if(i > 10) goto 5
(2) x=y+z
(3) i=i+1 
(4) goto 1
(5) end

然而,正确的优化答案是:

代码语言:javascript
复制
(0) x=y+z
(1) end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72774942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档