mips相关内容

它如何知道字符串何时结束而没有终止符呢?(代码如下)

我正在学习火星上的MIPS,根据以下代码,我感到困惑。因为当我将输入的字符串加载到保留空间时,即使没有终止符,代码也能正常输出。这是为什么呢? 我认为每个字符串都需要一个终止符,以便输入缓冲区知道何时停止。 有没有一张是自动填的还是.?提前谢谢您。 代码为: # Filename: mips3.asm # Author: me # Program to read a string from ..
发布时间:2022-03-27 22:27:11 其他开发

如何在MacOS上的MARS中打开保存的.asm文件

我刚开始使用MIPS,我找不到如何打开我保存的文件。我在Downloads文件夹下保存了一个.asm文件,但是当我尝试在MARS中打开文件并导航到同一个Downloads文件夹时,该.asm文件没有出现。 我正在MacOS上使用MARS。 推荐答案 我想我必须允许访问JAR文件的查找器目录。Mac最初不允许mars访问我的任何目录。 ..
发布时间:2022-03-27 22:24:00 其他开发

如何在MIPS中修改和打印字符串?

我在MIPS中处理一项任务。我想打印不带小数点的存储字符串,即110.11的输出应该是11011。 我认为我的代码正在做它应该做的事情,但是它没有显示任何输出。我对它进行了调试,结果发现addi语句一直在删除字符串的第一个元素,所以最后什么也没有留下。 .data string: .asciiz "110.11" .text .globl main .ent main ..
发布时间:2022-03-27 22:19:34 其他开发

颠倒MIPS程序集中的数字位

我正在学习MIPS汇编语言,我被要求编写一个执行以下操作的程序: 接受整数作为用户输入 将该整数打印为有符号二进制数 反转该整数中的位 打印生成的反转数字(也是二进制) 除了我显然需要使用移位操作和两个移位值之间的逻辑比较这一事实之外,我还相当迷茫。我的想法是编写一个循环,将输入整数的最低有效位放入临时寄存器,将该值左移1,将输入整数右移1,然后重复此过程,直到输入整数等于0。我 ..
发布时间:2022-03-27 22:16:22 其他开发

获取3条错误消息,MIPS汇编语言

这是一项作业。我们的想法是 提示用户: 输入第一个正整数 输入/、*、-、+中的任何一个操作 输入第二个正整数 然后调用do_math,它调用以下其中之一: do_add如果运算符为+,则在不使用ADD或SUB MIPS指令的情况下将2个输入相加,并在寄存器中返回结果。如果存在溢出,则返回错误条件。 do_sub如果运算符为-,请在不使用SUB或ADD MIPS指令(可以调 ..
发布时间:2022-03-27 22:11:46 其他开发

从寄存器中提取字段的MIPS指令

解决方案手册中的答案对于这个位域提取问题似乎是错误的。我的问题发布在下面。 以下是设置: 提出的问题是: 查找最短的MIPS指令序列,以提取 常量值i=22和j=5的$t0中的字段,并将该字段放入$t1 采用数据表中显示的格式。 解决方案手册给出了以下答案: lui $t1, 0x003f ori $t1, $t0, 0xffe0 and $t1, $t0, $t1 sr ..
发布时间:2022-03-27 22:09:38 其他开发

MIPS中的符号地址与标签

我只想确保我的定义准确。程序标签只是符号地址的另一个术语,还是不同的、更具体的东西? 推荐答案 基本上是这样的;另请参阅MIPS labels storage location以了解有关符号是引用内存地址的方式的更多信息。它们非常有用,可以避免手动重新计算每个循环顶部的数字地址(或者实际上距离相对分支的距离)。 在无法计算装配时间并且必须推迟到链接时间的情况下,它们也很有用。 ..
发布时间:2022-03-27 22:04:56 其他开发

MIPS中的移位加法乘法,不带乘法

我有以下代码,但我不断收到算术溢出错误。我试图解决的问题是将两个31位数字相乘,并将结果存储在$T2$T3中,然后打印出正确的结果。似乎我已经编写了两个要相乘的数字的代码,最终结果是一个31位的数字。 我很乐意缩小我觉得出错的范围,但我真的看不出需要在哪里进行更改以及需要进行哪些更改。 # program to multiply two 31 bit binary numbers (A ..
发布时间:2022-03-27 22:00:43 其他开发

MIPS如何存储用户输入并打印出来

我应该为这个问题做的是,我需要存储这些值,并打印出一个矩阵,用户要求输入行数、列数和元素的值,现在我甚至不知道打印/存储部分是否正确,我试图打印输入的单个字符串,但不起作用 .text .globl main main: addi $v0, $0, 4 la $a0, str1 syscall #printing str1 addi $ ..
发布时间:2022-03-27 21:57:59 其他开发

MIPS-Free动态分配空间(堆)

我正在尝试释放动态分配的堆内存空间 我尝试运行这段简单的代码,但一直收到相同的错误: 请求(-40)为负堆数量(Syscall 9) .text li $v0,9 li $a0,40 syscall li $v0,9 li $a0,-40 syscall 有人能帮我理解为什么它不工作吗? 是否有其他释放空间的方法? 推荐答案 MARS不支持带有负参数的sbrk, ..
发布时间:2022-03-27 21:52:02 其他开发

如何在不使用lui的情况下将32位常量加载到寄存器

我正在尝试加载32位常量0x1234ABCD以在MIPS程序集中注册$t0。但是,我无法使用lui执行此操作。我的直觉是使用两个addi,但我不确定如何做到这一点。我必须需要2个或更多才能获得32位信息。我需要在不使用lui的情况下以某种方式设置高位。复制lui而不使用它的好方法是什么? 推荐答案 您可以结合使用ori和sll在3条指令中加载32位常量,而不使用lui: or ..
发布时间:2022-03-27 21:47:31 其他开发

电路进行译码所需的最小输入位数

我正在学习计算机体系结构,我正在阅读有关编码器和解码器的知识。在MIPS处理器中,操作码有6位。我想知道需要多少个输入位才能构建一个解码器来解码操作码?我知道解码器是一个组合电路,它将来自n个输入线的二进制信息转换为最多2^n个唯一的输出线。 知道操作码是6位,这是否意味着我只需要3位,因为2^3是8,理论上最大输出数将是8? 推荐答案 机器指令字中的操作码是解码过程的输入,可能涉及同 ..
发布时间:2022-03-27 21:42:28 其他开发

嵌套的For循环多条件MIP

我有一个嵌套的带有多个条件的for循环要使用MIPS进行转换。我的具体问题是,为了在MIPS转换的1个分支语句中完成该指令,我如何将此行从C代码中拆分出来?-->if((a[i] > 0) && (b[j] > 0)) *我对代码进行了更新,以分解if条件。我在火星上跑步时遇到错误。错误为: 第28行:0x00400074处的运行时异常:提取地址未与字边界0x10010069对齐 ..
发布时间:2022-03-27 21:41:16 其他开发

MIPS装配分支(如果小于

我一直在开发一个非常基本的MIPS程序,它可以计算一些关于门票销售的东西。我已经实现了所有功能,但是当我执行if语句(BLT-->BLT-->BRANCH IF LISH)时,我遇到了一些错误。我在临时寄存器中存储了以下数据: - $t0 = # of VIP tickets. - $t1 = # of General Admission tickets. - $t2 = # of Box ..
发布时间:2022-03-27 21:38:19 其他开发

为什么在MIPS中是bgezal&;bltzal基本指令而不是伪指令?

根据this MIPS instruction reference,如果采用分支,则有两条指令(bgezal和bltzal)执行相对跳转和链接,而不仅仅是相对跳转。 这些指令可以分别用bgez或bltz模拟,后跟jal,这意味着bgezal和bltzal都应该被归类为伪指令。但是,两者都有分配给它们的操作码,因此它们被归类为基本指令。 将它们添加到基本指令集中而不使其成为伪指令的理由是什么?还 ..
发布时间:2022-03-27 21:35:14 其他开发

MIPS快速排序数组

我正在尝试将一段“C”代码转换成MIPS汇编语言,以便学习。我编写了MIPS代码,但在某些地方我做错了,没有得到所需的输出。当我运行程序时,它显示了完全不同的数字。请纠正我哪里做错了? C代码: 数据-lang=“js”数据-隐藏=“假”数据-控制台=“真”数据-巴贝尔=“假”> void swap(int array[], int a, int b) { int t = ..
发布时间:2022-03-27 21:32:10 其他开发

具有%hi和%lo的MIPS错误

lui $v0,%hi(length) lw $v1,%lo(length)($v0) li $v0,3 # 0x3 bne $v0,$zero,1f div $zero,$v1,$v0 break 7 mfhi $v0 mflo $v0 sw $v0,28($fp) lw ..
发布时间:2022-03-27 21:29:04 其他开发