问题标签 [mips]

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 回答
15242 浏览

assembly - 如何增加 MIPS 程序集中的地址?

我刚刚开始精益 MIPS 程序集,我正在尝试编写一个简单的while循环。它将等同于 C 代码:

int A[5];

for(i=0;i<5;i++) A[i]=i;

所以我知道我可以beq用来做一个while循环,但我不知道如何每次增加内存地址以进入下一个寄存器。我想也许slt操作数可能有用,但我不知道。

0 投票
2 回答
12478 浏览

sorting - 在 MIPS 中对用户输入的数字列表进行排序

我正在编写 MIPS 程序,它将检查要从终端输入的 10 个数字的列表。并且这些数字会按升序在终端上输出。下面是我的 MIPS 程序...请有人帮我研究一下,因为我正在运行并且无法正常工作...。

0 投票
2 回答
2381 浏览

math - MIPS 程序确定测试成绩的通过/失败

我正在编写一个 MiPS 程序,它将检查 15 个测试分数的列表。它将从终端输入。通过标准是 50 分。终端的输出将包括每个类别的分数以及通过和失败的学生人数。我应该使用输入提示和输出语句。请我需要一些帮助,只需要一些建议如何去做。

我有一个循环:

0 投票
3 回答
5012 浏览

gcc - GCC MIPS-32 调用约定/栈帧定义

MIPS-32 处理器架构似乎没有明确的标准化堆栈框架和 C 语言调用约定(寄存器使用等)。也就是说,似乎完全取决于汇编器/编译器工具链来定义自己的堆栈框架和调用约定。我一直在努力寻找 GCC 编译器用于 MIPS-32 指令集的约定的明确参考。我专门在 Cygwin 上使用 GCC 交叉编译器,它针对在 eCos 开源内核的嵌入式环境中使用的 MIPS-32 内核。

任何对有关该领域 GCC for MIPS-32 的权威文档的参考将不胜感激。

0 投票
2 回答
2095 浏览

mips - Mips syscall + eof = 无法读取整个文件?

我正在编写一些 mips 代码,每次循环迭代读取 ~4kb。问题是我正在读取的 mp3 文件包含多个 1A 实例,因此系统调用 14 停止并且不会再读取而不会到达文件的实际末尾。有没有办法解决?另外,是否有人拥有可以添加到系统调用 13 的标志的完整列表?

谢谢

0 投票
3 回答
25645 浏览

hex - 在 MIPS 中将十六进制字符转换为十进制等效值

如何获取单个 ASCII 字符并将其转换为 MIP 中的十进制等效值?

我是否只需要有一些条件才能从 ascii 代码中减去一定数量以使其成为十进制表示形式?

0 投票
1 回答
1155 浏览

list - MIPS:确定测试分数列表是否通过/失败

我正在编写一个 MiPS 程序,它将检查 15 个测试分数的列表。它将从终端输入。嗯,通过标准是50分。终端的输出将包括每个类别的分数以及通过和失败的学生人数。带有输入提示和输出语句...下面是我编写的程序,但它没有工作..请我需要..我不知道我是否做错了..

main: li $t0, 0 #通过分数计数器 la $t1, pass #pointer for pass 数组
li $t2, 0 #counter 分数不及格 la $t3, fail #pointer for pass array li $t4, 0 #overall counter li $t5, 0 li $t6, 0

loop: li $v0, 4 #system call for print string la $a0, prompt #load string syscall

else: sw $v0, 0($t3) #store word in fail array addi $t3, $t3, 4 #t3 = t3 + 4 (递增失败指针) addi $t2, $t2, 1 #t1 = t1 + 1 (递增失败计数器)

l_end: addi $t4, $t4, 1 #增量总计数器 bltu $t4, 15, loop #if t4 <= 15 分支到循环

输出计数

输出及格分数

loop_a: bleu $t0, $t5, lp_a_end #if t0 <= t5 branch to lp_a_end syscall #output single score

lp_a_end:

输出失败分数

loop_b: bleu $t2, $t5, lp_b_end #if t2 <= t5 branch to lp_a_end syscall #output single score

lp_b_end:

结尾

0 投票
3 回答
32168 浏览

assembly - 在 MIPS 的 HI 和 LO 寄存器中存储值

我正在 MIPS 中编写某些代码,我已经到了需要将结果临时存储在特殊寄存器(均为 4 字节宽)HI中的地步。LO这些说明可供我使用:

因此,divu将除法的结果LO和余数存储在 中HI,而multu将乘法的结果存储在LO(低 4 字节)和HI(高 4 字节)中。

稍后,要从寄存器中检索结果,我可以HILO

我已经想出了如何将计算结果存储在LO

  • divu除法的结果存储在 LO 中,所以我只需将结果除以 1 即可。

但是,存储起来HI更复杂。一种方法是强制multu指令将值移动 32 位(4 字节):

但是,结果是 in 的值在HI它应该在的位置右边 1 位(所以如果我的值是,0100 1000那么HI将包含0010 0100)。

有谁知道如何在HI寄存器中存储一些东西?

0 投票
1 回答
913 浏览

assembly - MIPS 程序集分配 - 加载字问题

以下代码用于实现指令

它使用寄存器 $s2 中值的最低 5 位来指定寄存器 $s1 应左移的数量:

我知道大多数指令在做什么。

然而,我不明白第二个加载字是如何从移位器加载一些东西的,它本身是一个指令而不是一个词。

此外,正如问题所说,当转换为二进制时,十六进制掩码的值在至少 5 个重要位置没有零,所以我不确定它将如何屏蔽至少 5 个 sig 位置。

0 投票
3 回答
10514 浏览

mips - MIPS 反编译器

我正在寻找能够将 MIPS 机器代码转换为 C 代码的反编译器。有什么建议么?