我知道两个变量,比如a1和a2出现在Fortran中的Equivalence(a1,a2)语句中,然后它们占据相同的内存空间。所以说这发生在一个过程中,其中a1和a2是该过程中的局部变量。Fortran中的“等价”
这意味着你不仅可以在内存中拥有a1和a2的副本吗?因为其中一个值将被覆盖。你可以将a1保留在内存位置,并将a2保存在整个过程的注册表中,这样会好吗?
我的问题基本上是:你可以在整个过程中注册a1吗?
我会说是的...除非你用尽了寄存器和A1必须存储回内存。然后你将覆盖a2并丢失它的值,然后变量a1和a2将实际指向a1的值。
感谢您的回答。您能否从理论意义上回答这个问题,即从Fortran程序员的角度来看?我们正在编写一门关于编译器的课程,这是我们正在修改的一个问题,所以更多的是关于注册分配而不是Fortran的使用(我们根本不用Fortran编程)。 – Awoken 2013-04-29 00:32:06
如果将a1和a2放入不同的地方,例如一个放在RAM中,另一个放在寄存器中,那么程序就很难像等价语句那样工作。每当一个变量的值发生变化时,编译器生成的可执行文件也必须更新其他变量。 – 2013-04-29 01:11:58
只要考虑'等价性'作为记忆中某个地方的别名。可能与类型转换。 – 2013-04-29 10:38:16