问题标签 [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.
assembly - 位算术 - 将两个结果连接到一位
我正在MARS 模拟器(Assembly)中做作业,但我被困在一个部分。
我们必须将一个 32 位字加载到寄存器中。
第 0 到 7 位代表蓝色,第 8 到 15 位代表绿色,第 16 到 23 位代表红色。其余位设置为零。
例如,黄色是 0x00ffff00。
即内存顺序中的 BGR0 颜色格式,或本地字节序机器字中的 0RGB。
作业分为三个任务,我在做最后一个。我们有一个 64 x 64 像素的显示器(每个像素为 4*4,因此总宽度和高度为 256)。红色始终设置为 0,绿色为 4 * 行数,蓝色为 4 * 列数。假设我们在 2 行和 3 行,绿色值为 2*4,蓝色值为 3*4。因此,在此示例中,在十六进制中,12 为 0xc,8 为 0x08,应加载到寄存器中的数字为 0x00000c08。
所以我的第一个问题是如何使用位代数来连接 2 次乘法的结果?
我的第二个问题是:假设我们在最后一个像素行和列:64 * 4 和 64 * 4。结果是 256,我们不能只使用 8 位来表示这个数字,所以我可能不应该使用像素1 到 64 但 0 到 63。对吗?
assembly - 如何从 MIPS 组件打印到屏幕
有人告诉我这是怎么做的,但是当我运行带有显示和键盘添加的模拟器时,屏幕上仍然没有输出。我究竟做错了什么?
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 上都看到了相同的行为。)
mips - 将二进制数据解码为 MIPS 指令
我无法弄清楚这两个 MIPS 指令是什么。
有没有办法使用 MARS IDE 来弄清楚这些指令是什么?
mips - 打开二进制文件进行读取
我正在尝试打开二进制文件以在 mars mips 模拟器中读取:
assembly - 在 MIPS 中使用系统调用 8 验证用户输入
我正在努力寻找一种有效的方法来检查用户是否使用系统调用 8 输入了只有数字(0~9)的有效输入
输入是 4 个字节长(1 个字),
我需要检查每个字节(char)是否是数字,
我想过尝试运行一个循环并检查它的 ascii 值是否低于 48('0' ascii 十进制值),
或高于 57('9' ascii 十进制值),
这是一种有效的方法吗?
如果是这样,在 MIPS 中实现这种 if 语句的正确方法是什么?
例如
*注意:假设我确实有一个标志知道在哪里停止循环
*编辑:这是代码的一部分,以使其更清晰:
c++ - 如何使用旧版 glibc 编译 SPEC CPU 2006 基准测试?
有人可以帮助我让 SPEC 基准测试选择我系统上存在的 glibc 版本 2.6.1,而不是默认的 gcc 采用吗?主要 glibc 版本低于
Spec benchmark 有一个配置文件,它通过给出 gcc 位置的路径来选择编译器。我希望我可以对此配置文件进行一些更改并将其指向不同的文件夹。
我需要这样做,因为我想在内核映像具有 glibc 2.6.1 的模拟系统上运行此基准测试。该模拟系统使用 gem5 进行模拟,gem5 是一个周期精确的系统模拟器
任何帮助表示赞赏。谢谢。
mars-simulator - mips 设置变量问题
编写一段 MIPS 代码,给定 $s0 和 $s1 中的值,将以下内容放入 $t* 寄存器:
换句话说,对于从 $t2 到 $t7 的每个寄存器,它存储前两个 $t* 寄存器值的总和。$s0 和 $s1 寄存器包含初始值。不要在代码中设置 $s0 和 $s1 的值。相反,学习如何使用 MARS 手动设置它。将您的代码保存到 sum.s 中。
所以我认为它只是想让我去
ETC
但是不在我的代码中而是在 MARS 中设置 $s0 和 $s0 的值是什么意思?我意识到 MARS 是一个 IDE,但是如何使用 MARS 设置变量?
还有一个问题,你如何在 MARS 中设置断点?我可以用 gui 版本做到这一点,但他们希望我们使用终端。
assembly - 设置输入变量
问题问:
编写一段 MIPS 代码,给定 $s0 和 $s1 中的值,将以下内容放入 $t* 寄存器:
换句话说,对于从 $t2 到 $t7 的每个寄存器,它存储前两个 $t* 寄存器值的总和。$s0 和 $s1 寄存器包含初始值。不要在代码中设置 $s0 和 $s1 的值。相反,学习如何使用 MARS 手动设置它。将您的代码保存到 sum.s 中。
好的,这并不难:
... 等等
但是最后一部分是什么意思?“不要在代码中设置 $s0 和 $s1 的值。相反,学习如何使用 MARS 手动设置它。将代码保存到 sum.s 中。” ?
assembly - MIPS 中的平方数
我想在 .asm 中创建一个子例程,可以查看终端中给出的数字是否是 2 的平方。
即:我选择数字 5,是 2^x = 5?我的子程序将进行几个除法来检查除法的其余部分是 0 还是 1,这将告诉我 5 是否是 2 的平方。
例如,在 CI 中写了这段代码:
组装中的等价物是什么?