我知道兩個變量,比如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