问题标签 [mips32]
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.
string - 如何在 MIPS 中显示字符串数组
这是 MIPS 编程中的一个非常初级的程序,我试图从用户那里获取输入并在屏幕上显示输入数据。但是当我运行这个程序时,我得到“ Memory out of bound error ”,然后程序在尝试显示数据时崩溃。这段代码有什么问题:
问候
mips - 可以使用单个指令放置在所需寄存器中的所有位模式的集合
给定以下一组 MiniMIPS 指令:
在 MiniMips 指令中,对于某些操作,例如将寄存器初始化为零位模式(所有位都为零),可能会有多个指令具有执行此操作的能力。
我的问题是,可以使用给定指令集中的单个指令将所有位模式放在所需寄存器中的集合是什么。
memory - MIPS 解释:sw
的背景
我目前正在为家庭作业开发小型 MIPS 程序,并在此过程中学习一些语言。我对此非常陌生,因此,即使是我正在执行的操作的最基本方面,我也非常不确定自己。此外,我的老师坚持在我们的作业中不使用伪代码,这导致我们很难理解如何完成某些任务。
那作业
我的作业问题是这样的:假设您要迭代地(在循环中)计算前 20 个 Biggie 数字,B(i) = 2i + 17i
并将它们按顺序存储在一个数组中,该数组B
的 MIPS 内存中的基地址存储在 register 中$s0
。请编写 MIPS 代码(完整注释)以计算B(i), 1 < i < 20
.
我的解决方案
我目前拥有的:
我的问题
我意识到我目前没有$s0
初始化任何东西,但这不是给我带来问题的原因。我感到困惑的是我将如何将该值存储2i+17i
回BiggieArray
. 任何有关 sw 工作原理的帮助或非常简单的解释都将不胜感激。
assembly - MIPS 编程:加载地址
的背景
我是一名刚开始为我的一门课程学习 MIPS 的学生,我的教授不允许la
在我们的代码中使用诸如 Load Address ( ) 之类的伪指令。我想知道如何正确使用标准指令的示例将已声明变量的地址存储到寄存器中以供稍后在代码中使用。
我的解决方案
我目前一直在尝试使用此代码,尽管我在lui
指令中遇到语法错误。
我的问题
据我了解,这应该导致将地址Array
放入$s0
. 但是,由于情况似乎并非如此,我想知道是否有人能够帮助我解决我应该在这里做的事情。
arrays - 将整数值添加到数组?
我是 MIPS 的新手,不明白这里发生了什么:
假设字数组A按此顺序存储0,1,2,3,4,5,6,7,8,9。假设 A 的起始地址在 $s0 中。在以下说明之后,这个数组的值是多少?
答案是“c”,但我不明白为什么。这是我的思考过程:
第一行代码:
由于这是一个整数数组,因此将地址 $s0 加上 32 并将其赋予 $t0 意味着将 A[8] 的地址赋予 $t0。A[8] 因为每个整数需要 4 个字节,因此将 0 加到 $s0 将得到 A[0] 的地址,将 4 加到 $s0 将得到 A[1] 的地址,依此类推......
第二行代码:
0($t0) 引用 $t0 中的第一个元素(我不知道那是什么)并将其加载到寄存器 $t1。
第三行代码:
$t1 的地址存储在内存中到 $t0 的第一个元素,用 4($t0) 表示。
同样,以上是我的思考过程,很可能是错误的
arrays - 这个 MIPS 数组 + 循环在做什么?
MIPS 新手,可以准确理解代码的运行情况,但我不理解所提供的答案/解决方案。任何帮助将不胜感激。
请阅读以下代码,并在函数返回后记下数组 A 中的内容。
/li>
解决方案:找到最小的差异
arrays - 堆栈增长与否?
AC 函数 f1 有一个包含 100 个元素的局部整数数组,它调用另一个函数 f2。编译成 MIPS 后,下列说法正确的是?(a) 当这个函数被调用时,栈将增长 100 字节。(b) 调用此函数时,堆栈将增长正好 400 字节。 (c) 调用此函数时,堆栈将增长不少于 404 字节。(d) 以上都不是。
我的想法是答案是 D,因为函数 f1 有一个整数数组的 100 个元素,所以由于每个整数使用 4 个字节,所以需要 100 个字节。然而,我们缺少函数 f2 的信息,因为 f2 也可以有一个存储在堆栈上的整数数组。我们不知道函数 f2 是否有一个整数数组,即使有,我们也不知道该函数是否选择将数组存储在堆栈上,这让我假设 D 是正确答案。假设仅仅因为你有一个函数并不意味着你会在堆栈上为它可能包含的任何内容分配空间是正确的,对吗?
谢谢!
assembly - How to convert C++ program to Mips assembly language in MARs assembler?
C++ program to be converted to mips assembly language
Mips assembly language program
I've tried lw, sw, lb, sb to put the value of register $t2 in the array, but I continue to get an error when I single step run program in Mars compiler
Updated Mips assembly language program
I run this program and I get this error: "address out of range 0x00000004" I want to print the values of my array to check if it is right.
c++ - 编译 mips32 时出错
我正在尝试在虚拟机中编译 MIPS32 代码。程序的其余部分是用 C 代码完成的。这里有问题的代码:
问题是当编译如下 gcc-c-O0 stoogeSort.S 给我以下错误:
我究竟做错了什么?为什么我会收到这些错误?
c - 编写 MIPS 机器指令并从 C 中执行它们
我正在尝试用 C 和 MIPS 编写一些自我修改的代码。
由于我想稍后修改代码,因此我正在尝试编写实际的机器指令(而不是内联汇编)并尝试执行这些指令。有人告诉我,可以只 malloc 一些内存,在那里写指令,将 C 函数指针指向它,然后跳转到它。(我包括下面的例子)
我已经用我的交叉编译器(sourcery codebench 工具链)尝试了这个,但它不起作用(是的,事后看来,我认为它确实看起来很幼稚)。我怎么能正确地做到这一点?
我在这里遵循 gcc 调用约定,其中参数传递给 $a0,并且函数的结果预计在 $v0 中。我实际上不知道返回地址是否会被放入 $ra (但我无法测试它,因为我无法编译。我使用 int 作为我的指令,因为我正在编译 MIPS32(因此是 32 位 int应该够了)