问题标签 [spim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8752 浏览

string - 删除字符串中的空格,MIPS 程序集

我正在尝试编写的程序有一个小问题。基本上我正在提示用户输入。然后我计算字符串中的空格数,并显示计数。我还需要打印出删除空格的原始字符串。

我遇到的错误是当我在没有空格的情况下向字符串中添加字符时,它只添加了第一个字符。$t2 是保存要添加的字符的寄存器,我在运行时检查了寄存器以确保那里的值发生了变化。我不知道还能去哪里看。

0 投票
2 回答
957 浏览

macos - 在 OS X 上安装 spim 时遇到问题

我正在尝试在 OS X 终端中运行 spim。我可以使用 QTSimp,但spim终端中的命令尚不存在。当谈到终端(刚从 Windows 切换)时,我有点新手,所以也许这真的很明显。

首先,我只是导航到 spim 文件夹并输入make.

我回去再次阅读安装指南,它说尝试make install

然后我尝试了安装指南中的其他内容,

出了什么问题,我该如何解决?

0 投票
3 回答
2323 浏览

mips - 使用多个 mips 参数 >4

我试图通过将它们推入堆栈来编写一个函数以使用除 4 之外的额外参数(因为我的 mips 版本仅支持 $a0-$a3),但我的代码不正确。这是我在主要(片段)中的代码:

它将临时值设置为 40,在堆栈上提供空间并保存它。然后调用我的函数。作为测试是否有效,当我将这些临时参数 $a0-$a3 移动到它们保存的寄存器对应项时,在函数内部,我有以下代码:

...但它只打印出 0 而不是 40,所以我做错了什么。任何帮助将不胜感激(并赞成)

0 投票
2 回答
156 浏览

python - 打开另一个命令行解释器并输入命令

我使用“spim”模拟器来模拟 mips 架构。它的工作方式是我首先应该有一个“filename.asm”文件,然后在 bash 中键入“spim”以打开 spim 的命令行解释器,然后我可以使用 spim 命令,例如加载文件并运行它, ETC..

我正在尝试编写一个 python 脚本来打开 spim 命令行解释器并开始在其中输入 spim 命令。这可能吗?

谢谢。

0 投票
1 回答
2579 浏览

assembly - MIPS 汇编 - 十六进制指令字符串

我正在Assembly中做一些事情,它需要一个字符串作为指令,例如

并以十六进制打印出指令。

我逐个扫描字符串,首先识别添加。Add 的操作码为 001000(6 位)

t1 被扫描,并将自身与数据部分进行比较,它的值为 5 位 01001,与 t0 相同的值为 01000,t1 再次为 01001。所有这些都是按顺序扫描的,因此优先级并不那么重要据我所知。

从那时起,我知道我需要以某种方式将它们混合在一起,然后从二进制转换为十六进制。我的问题是,我不确定在读取这些二进制值时应该如何存储它们。是否将它们存储在数据部分中,由于它们的奇数位大小,这似乎不正确,或者是否有一些更简单的方法。

老实说,我对位移知之甚少,所以答案可能就在那里。

这是我的代码。这在很大程度上是一个 WIP

0 投票
1 回答
202 浏览

spim - 在 spim 中将两个浮点寄存器相乘

我想在 spim 中编写一个小程序,计算圆的周长并从用户那里读取半径值......这是代码

s0 是在 .data 部分中从用户 p 浮点变量中输入的半径值

执行程序后,我在寄存器 f2、f6、f8 中有这些值(当 s0=3 时):

这个结果是真的吗?如果是真的,为什么 f8 10 中的值不是 10.2 ?

0 投票
2 回答
8077 浏览

assembly - 计算偏移量

我有一个家庭作业问题。

我有一个BNE指令0x88888888,我需要告诉什么是合法的跳转范围。

我的理论是偏移量告诉我我可以去:

  • 从 0x8888888 - 4 * 2 15
  • 至 0x88888888 + 4 * (2 15 -1)

我真的不明白为什么以及如何工作,有人可以解释一下吗?

0 投票
1 回答
1078 浏览

mips - MIPS la 关键字

假设有一个变量 var 存储在地址 0x00001000 并且它的值为 10。

如果我做了 la $t2, var

$t2 是否包含 var 的地址或 var 的值。我真的很想说地址,考虑到 la 代表加载地址,但我看过的所有例子都没有明确的联系。

我也知道这在本机指令中被分解为 lui ori,但它看起来究竟如何?

0 投票
1 回答
2491 浏览

assembly - 在装配中挣扎于二维数组

我正在尝试在 MIPS 中实现以下内容

X 是双精度浮点数的二维数组(矩阵),Y 是 32 位整数的二维数组。尝试为以下内容编写代码

现在我不知道如何在 MIPS 中声明这些数组:

到目前为止,我已经编写了一些主程序,但不知道如何在该.data部分中实现它们

0 投票
3 回答
1937 浏览

assembly - 为什么 lw 在 QtSpim 中返回“立即值对于字段来说太大:”?

我在 64 位 Windows 7 上运行 QtSpim 9.1.7。在Simulator / Settings / MIPS下,我勾选了所有选项(“Bare Machine”、“Accept Pseudo Instructions”、“Enable Delayed Branches”、“Enabled Delayed Loads”、“启用映射 IO”、“加载异常处理程序”)。

如果我使用以下方式存储硬编码值,我可以运行基本代码以在 QtSpim 中添加值oriori $t0,$0,4现在我想从内存中加载和存储数据,但lw不工作。

当我重新初始化并加载上述文件时,我收到以下错误消息:“Immediate value is too large for field:”

如果我然后尝试单步执行代码,我会到达 [00400024] 行。越过那条线,我收到以下错误消息:“PC=0x00400024 发生异常”/“数据/堆栈读取中的错误地址:0x00000000”

作为参考,我的代码被解析为:

我首先想到0($0)的肯定不是num1. 我的数据声明不正确吗?如果是这样,我做错了什么?

我不知道它是否相关,但我得到以下lali命令的语法错误(当我试图找到替代方法时lw):

  • la $a0,num1
  • li $t0,4