问题标签 [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.
c - C 编程到 MIPS 程序集(for 循环)
我正在尝试将此 C 代码转换为 MIPS 程序集,但我不确定它是否正确。有人能帮我吗?请
问题:假设 a、b、i 和 j 的值分别在寄存器 $s0、$s1、$t0 和 $t1 中。此外,假设寄存器 $s2 保存数组 D 的基地址
C代码:
我在 MIPS ASSEMBLY 上的尝试
floating-point - MIPS - 如何将一组整数转换为单精度浮点数
我真的很难弄清楚如何解决这个问题。我知道我想采用整数和小数的二进制表示,将它们组合为尾数,并将符号位分配给开头,但我不知道如何在 MIPS 中实际实现它。
任何人都可以帮助我至少开始吗?
假设您的 MIPS 硬件没有浮点寄存器和浮点 ALU。如果要执行浮点加法,则必须使用使用整数寄存器 ($0 - $31) 和整数 ALU 的 MIPS 整数指令来完成工作。在这个赋值问题中,您将编写 MIPS 代码,仅使用整数指令和整数寄存器,来实现一个将两个浮点数相加的过程,并编写一个 main 函数来调用该过程。
编写 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 单精度格式。
编写 MIPS 过程printFloat以打印 IEEE 单精度格式的数字。过程的输入是 $a0,它是一个 IEEE 单精度格式的数字。该过程将简单地打印存储在 $a0 中的位模式。您可以使用循环打印每个位。完成此过程后,您可以使用它以浮点格式打印输入数字2.5和7.5 。
编写一个 MIPS 程序来实现 main 函数来调用你的程序。在这个程序中,您将调用
toFloat(0, 2, 5) 生成 2.5 的浮点格式;
toFloat(0, 7, 5) 生成 7.5 的浮点格式;
printFloat 打印 2.5
printFloat 打印 7.5
这是我到目前为止的代码:
assembly - 了解汇编 MIPS .ALIGN 和内存寻址
我正在学习这门课程,但我真的很难理解指令的.align
概念。
这是一个例子,我无法理解:
我知道在数据段里面,有地址,以0x10010000、0x10010020等开头。
而且我知道,在每个地址内部,有 8 个内存字段,每个都有 32 位。
现在,我不明白的是,var2
地址 0x10010010 内部的方式和原因是什么?str1
位于地址 0x10010003 内,因为我们为var1
.
最后一件事是,指令到底在.align
做什么?当我在Mars4中测试它时,它只是在我使用和向上时将数据转移到下一个内存字段align 3
,但我并没有真正理解它。
integer - 在 mips 中读取和打印整数
我的程序假设读取一个整数并将其打印回用户,但每次它只打印 268501230 无论输入什么。任何帮助,将不胜感激。
assembly - 计算平均数时出现算术溢出错误 - MIPS 汇编(MARS)!
我试图将十个数字平均输入到一个数组中。我在add $a2, $a2, $a1
.
不知道我做错了什么。帮助将不胜感激。
另外,我尝试将限制切换为 2 个整数,因为它不会很快溢出。它将地址加在一起,而不是整数。这是我对为什么它不断溢出的猜测。不过,我如何将地址更改为整数?
这是我的代码。
(编辑以修复代码格式 - RobertB)
assembly - 如何从/到地址加载和存储字,该索引位于寄存器中,MIPS
如何从索引在寄存器中的地址加载和存储字?在汇编 MIPS
示例中:
这些说明只是为了我会做的(不正确)谢谢
loops - 简单的是/否循环重复/结束 - MIPS 组装 (MARS)
b我不太确定为什么它没有读取输入并决定重复或结束..这是我的代码,不胜感激!
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.
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
,但这还不够。我认为问题在于更改此值后,该算法从查找表中获取了错误的索引,对吗?
提前感谢您的帮助。
assembly - 何时使用临时寄存器与保存寄存器?
每当我将参数 ($a0
或$a1
) 传递给我到达 using 的部分 (标签)jal
时,是否使用临时寄存器 (如$t0
) 而不是保存的寄存器 ( $s0
) 来保存或操作该部分中的参数是否重要?在该部分运行时使用一组而不是另一组有任何风险吗?