相同功能的程序编译产生的中间代码(IR)相同吗
这么宽泛的问题,答案只能是:看情况。反过来说就可以很确定:如果两段代码的IR完全相同(包括其每个属性的值都一样),那它们的功能肯定是相同的。题主补充的问题描述:由编译原理可知,如果由前端产生的IR相同或者类似,那么算法的功能是相同的。但是,能不能由算法功能相似反推出IR相似?其实就是想问:算法的功能(命题P)相同是否是IR相同(命题Q)的充要条件。现实的说,Q =\u0026gt; P——P是Q的必要条件但不是充分条件。这个问题要回答的话,得看:是编译过程中什么阶段的IR是否已经经过某些优化 / 规范化(canonicalize)IR的语义的抽象程度有多高/低源语言要求保留的语义有多少这包括一些特殊情况,例如要求保留调试符号信息的情况,可能会干扰IR的规范化要展开讨论的话题主(或者其他感兴趣的同学)可以在评论区大概说说想了解什么方面的。
■网友
不一定
■网友
什么算功能相似?一个冒泡排序和一个快速排序算功能相似吗?
■网友
lua和luajit对同一段lua代码生成的ir就完全不同
■网友
不一定。同样的源代码在不同环境不同编译器中编译的结果都可能不同,何况源代码不相同的程序。但是运行的结果是相同的,否则就不符合编译的原则。
■网友
不一定,举个例子,同样是两个数相加,同样在jvm上,scala是调用了类本身的函数,java是用的运算符。语言基础部分的实现原理不同会导致中间代码不同。
推荐阅读
- 招聘都要学历,何来程序员不看学历
- 银行系统的研发岗(程序员)是不是很难进(校招)推广到国企的研发岗(程序员)呢
- 书屋|江苏启东汇龙镇“一屋多用”聚人气 添功能 增活力
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 王者荣耀李白能不能出肉
- 程序猿和产品汪能愉快的一起谈恋爱嘛
- 怎样成为一名合格的Python程序员?
- 知乎有没有必要增加一个特别关注功能
- 为啥5G和2.4G默认的BSSID是相同的
- 我是程序猿养了条狗,取啥名字好
