问题标签 [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 投票
0 回答
276 浏览

mips - 延迟槽 MIPS 的顺序

假设我们有一个加载指令,然后是另一个加载指令,那么执行顺序是什么?例子:

我用Spim对其进行了测试,结果是(1)->(2)->(3),我无法理解,因为加载指令应该考虑加载延迟槽。

0 投票
0 回答
614 浏览

assembly - 调整 mips-gcc 输出以使用 MARS

mips-gcc 生成的 MIPS 汇编代码几乎(但不完全)在 Mars MIPS 模拟器上运行。例如:

  • 编译器生成“j $31”而不是“jr $31”
  • 编译器将 .align 指令放在文本段中,Mars 不允许这样做。

此外,生成的程序集还没有完全设置好,无法正常启动和停止(即最后没有 sycall 10)。

这些问题似乎都可以通过简单的脚本轻松解决;但是,在我重新发明轮子之前,我想知道:(1)是否有任何 gcc 标志可以使这些问题中的一些消失?(2) 有没有人知道现有的程序可以修复 mips-gcc 输出,以便在火星上运行?

(FWIW,我在 gcc 3.3.6 和 4.6.1 上都看到了相同的行为。)

0 投票
2 回答
4173 浏览

mips - 在 mips 中查找子字符串和索引

我试图找出子字符串和第一次出现的索引。但有些不对劲。我比较模式数组的每个元素和字符串数组的每个元素,直到指针到达'\ 0'。有什么问题。算法完全错误?

0 投票
1 回答
8130 浏览

assembly - MIPS“未对齐地址,异常 5”错误

我是一个使用 SPIM MIPS 模拟器的菜鸟。
当我尝试将 26 个单词的数组初始化为 0 时,我在 title X 中出现错误 26 次。我已将问题隔离为存储单词操作sw $t0, 0($s3),但不知道我做错了什么。

编码:

0 投票
1 回答
8149 浏览

assembly - 在 MIPS 中查找字符串的字符

如何在 MIPS 中已知长度的用户输入字符串中找到特定字符?我看过 SO 以及许多其他网站,但是,似乎没有一个可以从根本上解释如何操作用户输入的数据。

这是我到目前为止所拥有的:

0 投票
1 回答
1003 浏览

assembly - read_char 系统调用在命令行 spim 中无法正常工作

我在 MIPS 汇编中编写了这个简单的程序:

当我在 QtSpim 中运行它时,它可以正常工作:它从控制台获取一个字符,并在输入后立即打印它,然后重复。但是,QtSpim 的控制台不允许我粘贴程序的输入(我可以这样做,但不会被读取)。所以我尝试在Linux(命令行)版本 9.1.8的spim中运行它。它可以工作,但输入字符时不会立即做出反应;它总是等待换行符,即使在输入没有剪切和粘贴的字符时也是如此。所以我期望这种行为:

但我得到了这个:

有任何想法吗?提前致谢。

0 投票
1 回答
6810 浏览

assembly - Mips:“Hello World”遇到错误

我正在尝试在 Mips 中显示“Hello World”(来自 Internet 上的示例)并查看它是如何工作的,但最终出现错误。我首先遇到以下错误:“spim: (parser) Label is defined for the第二次出现在文件 C:Program Files (x86) main: # Execution started at label "main" " 的第 6 行 ^ 为了修复它,我重新初始化并重新加载。然后我运行 Qtspim,最终出现以下错误:“指令在 0x00400028/Notepad++/test.asm [0x00400028] 0x3c010000 lui $1, 0 [Greetings] 处引用未定义符号;8:la $a0, Greetings # load address of string打印成 $a0

有人可以解释导致第一个和第二个错误的原因吗?我只是想测试我在网上找到的代码,并在尝试分配之前了解 Qtspim 的工作原理。我在 Windows 08 上使用 Notepad++。非常感谢您的帮助。下面是代码。

0 投票
0 回答
296 浏览

arrays - 尝试将浮点值添加到 MIPS 中的数组但出现异常 7 错误

我必须编写一个程序,允许我在 2 个数组中添加和搜索浮点数,每个数组有 20 个位置(数组 HEIGHT 和 RADIOUS)。我在添加部分时遇到问题...我读取了用户输入,然后当我尝试将第一个浮点值添加到数组中时,我收到一个异常 7 错误...它说数据地址错误。我不知道还能做什么......我正在使用 Spim..

这是我的代码:

谢谢!

0 投票
1 回答
16924 浏览

arrays - MIPS 用户将整数输入数组然后打印出来

你好我一直在练习编写汇编语言,我一直在研究这个看似简单的代码。我想提示用户输入,然后我想接受该输入并将其放入数组中。然后我想打印出数组。我知道我可以将它们打印出来而不将它们放入数组中,但这只是为了我的练习。有些东西是不对的,尽管它不会将它们打印出来。

请帮我解决我做错的事情。哦,当我击中零时,零是一种标记值,这意味着它的输入结束

0 投票
0 回答
156 浏览

mips - MIPS - 加载字行为

SO用户

我希望有人可以解释我在使用 SPIM 运行我的 MIPS 代码时遇到的行为。我正在实现一种加密算法,其中一个步骤是加载 64 位宽的加密密钥。例如,如果加密密钥是0x123456789ABCDEF0,我将通过以下方式声明它;

现在,每当我enc_key_lo首先加载时,我都会检查是否遇到 a0以便我可以加载enc_key_hi. 以下是我的代码;

当我运行代码时,我观察到寄存器$s0在循环的连续迭代中加载以下内容load_lo

我期待寄存器$s0在加载后加载为 0,78但它一直加载到F0. 因此,这违背了load_hi在代码中包含段的目的。我注意到,如果我注释掉了声明enc_key_hi,则$s0在加载0后加载 with 78

有人可以解释这种行为吗?亲切的问候。