【发布时间】:2012-06-26 15:59:48
【问题描述】:
我想知道是否有一些理论/工具可用于将包含函数调用的一段代码替换为所有函数调用已被各自代码替换的代码。
喜欢
main()
{
fun();
}
fun()
{
int i;
fun2();
}
fun2()
{
int j;
}
进入
main()
{
int i;
int j;
}
我知道有很多事情需要处理,比如局部变量名、递归调用、外部函数调用等...... ..
我也知道它可能根本没有用,但仍然存在这样的东西吗?即使在理论上?
我应该称它为提前每个处理器单元吗:)
【问题讨论】:
-
我称之为优化编译器:)
-
C 预处理器的作用与此惊人地相似。
-
如果您保留
{},即main() { {int i;} {int j} },处理局部变量实际上非常容易 -
编译器可以从函数内联生成代码。一些程序验证器也通过这种方式基本上扁平化程序来工作。然而,前者通常不会以可读的形式提供它们的中间结果。后者需要相当重写才能产生正确的结果。
-
这是什么语言?您的函数没有返回值,因此它们与 C 或 C++ 不匹配。
标签: c++ c compiler-construction theory compiler-theory