【问题标题】:Mips first steps - Spim : syntax errorMips 第一步 - Spim : 语法错误
【发布时间】:2017-08-02 12:43:36
【问题描述】:

我正在参加一门大学课程,该课程根据规范尝试遵循“计算机架构一种定量方法”一书。

我们的任务是在 MIPS 中编写一个插入排序,但我不知道应该如何调试我的代码甚至编译它。学校网页指向书中的gcc-mips-elf和MipsIt。

问题是我使用的是 arch 而不是 debian,所以 gcc-mips-elf 不可用,MipsIt 需要模拟器,所以我决定使用我在 arch 数据库中找到的本机模拟器 QtSpim。

但是当我尝试从课程网页执行模板时,spim 会抛出错误:syntax error on line 17 ... .word 5, 3, 4, 1, 2

#define t0 $8
#define t1 $9
#define t2 $10
#define t3 $11
#define t4 $12

#define s0 $16
#define s1 $17
#define s2 $18
#define s3 $19

  .globl    field
  .data
  .align    2

field:
  .word    5,3,4,1,2

  .text
  .globl start
  .ent start

start:
  // your code goes here
  nop
  .end start

【问题讨论】:

  • 该代码似乎是用 GNU 汇编器编写的。它与 SPIM 不兼容。 .word 指令不是问题,并且不会导致我在 Windows 上使用 QtSpim 时出现语法错误。但是,据我所知,所有这些#define 行都将被 SPIM 视为 cmets,.end.ent 对 SPIM 没有任何意义,并且 SPIM 程序需要有一个 main 标签。
  • 如果你想使用 MIPS 程序集(而不是 x86),看看 MARS (courses.missouristate.edu/KenVollmar/mars),我发现它比 SPIM 更容易使用。
  • 如果您想学习计算机体系结构而不是学习使用工具,只需在推荐的发行版上运行推荐的工具。

标签: mips spim


【解决方案1】:

.word 汇编器指令在内存中为后面的值保留一个字。汇编器不允许您在汇编器指令之后提供的值列表。如果您改为将其分解为 5 个单独的汇编器指令,它应该可以解决语法错误。

具体来说,你应该替换:

.word    5,3,4,1,2

与:

.word    5
.word    3
.word    4
.word    1
.word    2

【讨论】:

    猜你喜欢
    • 2015-07-09
    • 2018-07-23
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多