我必须用MIPS编写一个程序,使用add和shift方法将两个数字相乘。在多次尝试之后,我得到了一个我认为应该可以工作的程序,但它不起作用,然后我用Java编写了它,代码在Java中工作。然后,我尝试将它从Java转换为MIPS (通常对我来说,用高级语言从代码转换到低级语言更容易),在翻译之后,它仍然无法工作。这是我写的代码,如果有人发现它们有什么问题或知道如何修复它们,请告诉我。
谢谢,
在Java中:
static int prod = 0;
public static int mult (int mcand, int mier)
{
while (mier != 0)
例如,
$a0 is an index/pointer
$a1 is the address of the array base
我想在一个循环中访问数组中的每个元素,对该元素执行算术操作,然后将其保存到下一个元素。索引应该在每次迭代时增加+1。
举个简单的例子,我试着对数组中之前的每个元素进行平方运算。初始硬编码的值是INDEX=0,ARRAY=2。我已经标记了我混淆的地方。我不知道如何为每个循环设置这个变量。
.data
INDEX: .space 4
.align 2
ARRAY: .space 16
.align 2
.
希望你们今天过得愉快
所以,我正在上一门关于MIPS的课程,得到了这个家庭作业,我解决了这个家庭作业,但是发现了一个我两天以来一直无法解决的问题……因此,问题是将这个快速排序代码转换为MIPS,并创建一些函数来打印和读取用户输入的元素--我的问题是快速排序。
void quick_sort(int array[], int n) {
int i = 0; // i = low index
int j = n-1; // j = high index
int pivot = array[(i+j)/2]; // pivot = middle value
while (i <= j)
我试图将一段"C“代码转换成MIPS汇编语言,以便学习。我编写了MIPS代码,但在某些地方我做错了,没有得到所需的输出。当我运行这个程序时,它显示的是完全不同的数字。请纠正我哪里做错了?
C代码:
void swap(int array[], int a, int b) {
int t = array[a];
array[a] = array[b];
array[b] = t;
}
int partition (int arr[], int low, int high) {
int pivot = arr[high]; // pivot
我试图在MIPS中实现选择排序。我的输出偶尔是正确的,但是有几个例子是不正确的。通常情况下,它是正确的,直到某个点,并在该点之后,数字打印出未排序。它似乎对多个负数也有困难。
我相信问题可能与互换功能有关,但我不确定。任何帮助都将不胜感激。
注:我不允许使用假指令,如bge或移动.
下面是我正在仿真的C实现中的代码。
.data
msg1: .asciiz "The elements sorted in ascending order are:"
.align 2
space: .asciiz " "
我正在尝试实现堆栈,但是pop()不能正常工作。弹出后的最后一个元素不会被删除,栈也不会为空。我已经检查了头,最后没有指向空,这是导致问题的原因。我找不到为什么会发生这种情况,有人能解释一下吗? public class StackUsingLL {
public class Node{
int data;
Node next;
Node(int data){
this.data=data;
}
}
Node head;
boolean isEmpty() {
if(head==null)return true;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity leftshift is
Port ( Din : in STD_LOGIC_VECTOR (31 downto 0);
Dout : out STD_LOGIC_VECTOR (31 downto 0));
end leftshift;
architecture Behavioral of leftshift is
signal t1:
class LinkedListNode {
constructor(value) {
this.value = value;
this.next = null;
}
}
let head = new LinkedListNode("head");
let x = [1, 1, 1, 1, 4, 10, 10, 3, 10, 9, 5, 5, 5, 8];
for (let ele of x) {
let y = new LinkedListNode(ele);
let pointer = head;
我正在尝试翻译mips伪指令rol (向左旋转)。在我提交作业之前,我需要翻译它,这是不幸的,因为伪指令对我来说工作得很好。
指令是,
rol $s4,$s4, 1 #goes to the left most bit (which as it says, gets the left most bit)
我翻译的方式是,
lui $s4, 0x8001
ori $t0, $s4, 0x0004
srl $s4, $t0, 31
sll $s5, $t0, 1
or $s5, $s5, $s3
但是