我正在使用将C ++和Javascript混合到MIPS程序集的语言开发编译器
调用一个或多个函数(包括递归)时保留堆栈中全局变量的最佳方法是什么?
在main函数中,全局和局部变量位于堆栈中,从$ fp开始,该部分运行良好。 但是,当调用另一个函数时,我使用的方法保存了返回地址$ ra并设置了新的$ fp和$ sp。 这意味着我无法再访问保存全局变量的旧$ fp地址。 怎么办?
答案 0 :(得分:2)
我将全局变量放在.data段
以下是我访问和修改其内容的方式
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