问题标签 [mars-simulator]

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 投票
2 回答
8882 浏览

c - C 编程到 MIPS 程序集(for 循环)

我正在尝试将此 C 代码转换为 MIPS 程序集,但我不确定它是否正确。有人能帮我吗?请

问题:假设 a、b、i 和 j 的值分别在寄存器 $s0、$s1、$t0 和 $t1 中。此外,假设寄存器 $s2 保存数组 D 的基地址

C代码:

我在 MIPS ASSEMBLY 上的尝试

0 投票
1 回答
6838 浏览

floating-point - MIPS - 如何将一组整数转换为单精度浮点数

我真的很难弄清楚如何解决这个问题。我知道我想采用整数和小数的二进制表示,将它们组合为尾数,并将符号位分配给开头,但我不知道如何在 MIPS 中实际实现它。

任何人都可以帮助我至少开始吗?

假设您的 MIPS 硬件没有浮点寄存器和浮点 ALU。如果要执行浮点加法,则必须使用使用整数寄存器 ($0 - $31) 和整数 ALU 的 MIPS 整数指令来完成工作。在这个赋值问题中,您将编写 MIPS 代码,仅使用整数指令和整数寄存器,来实现一个将两个浮点数相加的过程,并编写一个 main 函数来调用该过程。

  1. 编写 MIPS 过程 toFloat 以将浮点数转换为 IEEE 单精度格式。该过程以三个整数为输入:$a0、$a1、$a2,分别代表一个浮点数:如果 $a0 包含 0,则浮点数为正数,否则如果 $a0 包含 1,则浮点数为负数。寄存器$a1 中存储的数字是浮点数的整数部分,寄存器$a2 中存储的数字是浮点数的小数部分。例如,要显示浮点数 -5.25,三个输入寄存器应包含以下数字:$a0 = 1、$a1 = 5 和 $a2 = 25。对于小数部分,您可以使用 div rs rt将 25 除以 100 的指令. 分数将存储在 HI 寄存器中,您可以使用 mfhi 指令检索分数。该过程将返回 v0,其中包含对应于由三个输入数字表示的浮点数的 IEEE 单精度模式。完成此过程后,您可以使用它将输入数字 2.5 和 7.5 转换为其 IEEE 单精度格式。

  2. 编写 MIPS 过程printFloat以打印 IEEE 单精度格式的数字。过程的输入是 $a0,它是一个 IEEE 单精度格式的数字。该过程将简单地打印存储在 $a0 中的位模式。您可以使用循环打印每个位。完成此过程后,您可以使用它以浮点格式打印输入数字2.57.5 。

  3. 编写一个 MIPS 程序来实现 main 函数来调用你的程序。在这个程序中,您将调用

    toFloat(0, 2, 5) 生成 2.5 的浮点格式;

    toFloat(0, 7, 5) 生成 7.5 的浮点格式;

    printFloat 打印 2.5

    printFloat 打印 7.5

这是我到目前为止的代码:

http://s7.postimg.org/v39ufikaj/code.png

0 投票
3 回答
33300 浏览

assembly - 了解汇编 MIPS .ALIGN 和内存寻址

我正在学习这门课程,但我真的很难理解指令的.align概念。
这是一个例子,我无法理解:

在此处输入图像描述

我知道在数据段里面,有地址,以0x10010000、0x10010020等开头。

而且我知道,在每个地址内部,有 8 个内存字段,每个都有 32 位。

现在,我不明白的是,var2地址 0x10010010 内部的方式和原因是什么?str1位于地址 0x10010003 内,因为我们为var1.

最后一件事是,指令到底在.align做什么?当我在Mars4中测试它时,它只是在我使用和向上时将数据转移到下一个内存字段align 3,但我并没有真正理解它。

0 投票
2 回答
111025 浏览

integer - 在 mips 中读取和打印整数

我的程序假设读取一个整数并将其打印回用户,但每次它只打印 268501230 无论输入什么。任何帮助,将不胜感激。

0 投票
1 回答
2791 浏览

assembly - 计算平均数时出现算术溢出错误 - MIPS 汇编(MARS)!

我试图将十个数字平均输入到一个数组中。我在add $a2, $a2, $a1.

不知道我做错了什么。帮助将不胜感激。

另外,我尝试将限制切换为 2 个整数,因为它不会很快溢出。它将地址加在一起,而不是整数。这是我对为什么它不断溢出的猜测。不过,我如何将地址更改为整数?

这是我的代码。

(编辑以修复代码格式 - RobertB)

0 投票
2 回答
1864 浏览

assembly - 如何从/到地址加载和存储字,该索引位于寄存器中,MIPS

如何从索引在寄存器中的地址加载和存储字?在汇编 MIPS
示例中:

这些说明只是为了我会做的(不正确)谢谢

0 投票
1 回答
3080 浏览

loops - 简单的是/否循环重复/结束 - MIPS 组装 (MARS)

b我不太确定为什么它没有读取输入并决定重复或结束..这是我的代码,不胜感激!

0 投票
1 回答
322 浏览

assembly - Mips exception at PC

Currently trying to develop a mips program for generating a math sequence. However, i keep getting a Mips exception at PC.

0 投票
1 回答
922 浏览

assembly - MIPS MARS 计算给定文本文件的 crc。将 crc 32 更改为 crc 16 和 crc 8

一开始我必须说我是 mips 汇编语言以及 Stackoverflow 的新手。

我有 mips 汇编语言的工作代码,它使用给定文本文件的查找表计算 crc 32,我想更改它以计算 crc 16 和 crc 8。

我几乎可以肯定,对于所有情况都正确生成了查找表:crc 32、crc 16 和 crc 8。我知道我应该更改例如 crc 16 的初始化值0xffff,但这还不够。我认为问题在于更改此值后,该算法从查找表中获取了错误的索引,对吗?

提前感谢您的帮助。

0 投票
2 回答
1216 浏览

assembly - 何时使用临时寄存器与保存寄存器?

每当我将参数 ($a0$a1) 传递给我到达 using 的部分 (标签)jal时,是否使用临时寄存器 (如$t0) 而不是保存的寄存器 ( $s0) 来保存或操作该部分中的参数是否重要?在该部分运行时使用一组而不是另一组有任何风险吗?