如何在MIPS中访问全局变量?

时间:2017-05-02 18:19:46

标签: assembly compiler-construction mips

我已经看到了直接通过名称访问的全局变量,例如在以下视频中:

https://youtu.be/zs-TKZNGdsk?list=PL5b07qlmA3P6zUdDf-o97ddfpvPFuNa5A&t=614

EG:

        .data
sum:    .word 0
        .text
        .globl  main

main:
        sw $a0, sum

这不能在MARS 4.2上为我编译,我收到以下错误:

line 13 column 9: "sw": Too few or incorrectly formatted operands. Expected: sw $t1,-100($t2


我在以下网站上也看过使用了sum($ gp): https://courses.cs.washington.edu/courses/cse378/02sp/sections/section3-2.html

所以我写了

        .data
sum:    .word 0
        .text
        .globl  main

main:
        lw $a0, sum($gp)

哪个也无法编译,出现此错误:

line 11 column 17: "sum": operand is of incorrect type

背景信息:
我正在编写一个编译器。我知道我可以通过$ gp的文字偏移来访问全局变量,但我试图避免需要的枚举和查找过程。请告诉我,我可以通过名称访问它们,而且我只是使用了一些不稳定版本的MARS。

1 个答案:

答案 0 :(得分:0)

我从MARS 4.2(我的学校强迫我们使用上学期)更新到MARS 4.5,这解决了我的问题。