2017-08-15 88 views
0

我自配C++和JavaScript來MIPS大會如何在調用函數時在MIPS堆棧中保留全局變量?

調用一個或多個功能時,包括遞歸什麼是保存在棧中的全局變量,最好的辦法語言開發編譯器?

在主函數中,全局變量和局部變量位於堆棧中,從$ fp開始,該部分運行良好。 但是,在調用另一個函數時,我使用的方法會保存返回地址$ ra並設置新的$ fp和$ sp。 這意味着我無法再訪問保存全局變量的舊$ fp地址。 如何繼續?

下圖描述了我正在使用的過程。從森教授的講座得到的圖像,從伯克利 Prof. Koushik Sen - Berkley

+3

爲什麼把它們放在那裏?如果你剛剛靜態分配它們,你就不會有這個問題。 – harold

+0

你的意思是分配在.data區域? – raullalves

+2

他們是全局變量是嗎?你爲什麼試圖用局部變量把它們放在堆棧上? –

回答

1

我把全局的。數據段

這裏是我如何訪問並修改其內容

data 
    globalVariable: .word 10 

.text 

    #access 
    lw $a0, globalVariable 

    #modify 
    la $a0, globalVariable #get address 
    li $a1, 11 #new value 
    sw $a1 0($a0) #save new value 

    lw $a2, globalVariable #get new value 
相關問題