我已经看到了直接通过名称访问的全局变量,例如在以下视频中:
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。
答案 0 :(得分:0)
我从MARS 4.2(我的学校强迫我们使用上学期)更新到MARS 4.5,这解决了我的问题。