我一直在对这个主题进行一些研究,但没有找到好的具体答案。假设您的代码中有这些表达式:
B = 2
…
B = B + 5
…
B = J + B
…
(这些都是非常简单的例子,我知道它们不现实)
B
在这些行中有许多不同的值。在第一行它是2
,后来它变成了7
,然后更多的是它7 + J
。编译器需要跟踪这些不同的值B
,因此一种方法是重命名它们。例如,当B
被重新定义为B = B+5
时,可以更改为B1 = B+5
。最后的重新定义看起来像B2 = J+B1
.
这个想法背后的动机涉及我正在构建的优化程序。它涉及用它们相关的表达式替换变量。然而,如果一个变量被重新定义,那么字符“B”可以同时表示多个事物。我用来跟踪事物的方法就是我上面描述的,重新定义变量名。
这就是编译器的工作方式吗?有这个名字吗?
在重新定义变量的情况下,我试图尽可能多地了解编译器重新定义变量的过程。
如果有帮助,我相信这将在编译的预处理阶段完成,并且我相信这与宏扩展类似。
编辑:我为这个问题添加了更多背景信息。