Awo*_*ken 1 fortran register-allocation procedures
我理解两个变量,比如a1和a2出现在Fortran中的Equivalence(a1,a2)语句中,然后它们占用相同的内存空间.所以说这发生在一个过程中,其中a1和a2都是该过程中的局部变量.
这意味着你不仅可以在内存中拥有a1和a2的副本吗?因为其中一个值将被覆盖.您可以将a1保留在内存位置并将a2保存在整个过程的寄存器中,这样就可以了吗?
我的问题基本上是:你可以将a1保留在整个程序的注册表中吗?
我会说是的...除非你用完了寄存器而a1必须存储回内存.然后你将覆盖a2并失去它的值,然后变量a1和a2实际上将指向a1的值.
a1
并且a2
在equivalence
语句中表示这两个变量将占用相同的存储空间.改变一个将改变另一个,即使它们是不同类型的变量(例如,a1
是整数并且a2
是真实的).Fortran没有给你任何方法来指定一个变量应该在一个寄存器中,并且一个equivalence
语句似乎很可能会自动禁止编译器这样做.
所以
您可以将a1保留在内存位置并将a2保存在整个过程的寄存器中,这样就可以了吗?
是不适用的.
我强烈建议不要使用equivalence
...它是有害的,并且可能只保留在语言中以支持遗留代码.如果您需要跨类型传输数据,那么现代Fortran方法就是transfer
内在的.
归档时间: |
|
查看次数: |
183 次 |
最近记录: |