我正在尝试用python编写一个程序,它可以运行SPIM并将用户输入发送到spim子例程。
我试着用
mips=subprocess("spim",stdin=PIPE, stdout=output.txt, stderr=output.txt)
mips.stdin.write(b"10")
mips.stdin.write(b"15")
mips.stdin.write(b"15")
但它完全跳过了等待用户输入的过程
下面是MIPS子例程应该做的事情
enter first value: 10
enter second val
我们正在开发C到MIPS的交叉编译器,为此,我们需要将我们的MIPS代码与其他C到MIPS交叉编译器生成的代码进行比较,如LLVM或CodeSourcery等。
现在,我们正在使用CodeSourcery交叉编译器为给定的C程序生成相应的MIPS代码。它生成像lui $2,%hi($LC0),lw $3,%lo($LC0)($2)这样的语句,其中LCO是一个标签,但是在SPIM中加载该文件。它显示解析器错误,如
(parser) Unknown character on line 30 of file test1.s
lui $2,%hi($LC0)
我不知道这种语句的等效MIPS代码
背景
我是一个刚开始学习MIPS的学生,我的教授不允许在我们的代码中使用伪指令,比如加载地址(la)。我想知道如何正确使用标准指令将声明变量的地址存储到寄存器中,以便稍后在代码中使用。
我的解决方案
我目前一直在尝试使用这段代码,尽管我在lui指令中遇到了语法错误。
main:
.data
Array:
.space 80 #Declares that Array will hold 20 integers
.text
lui $s0, Array #loads most significant bits into $s0
我从MIPS开始,我必须做一个简单的程序
.text #text section
.globl main #call main by MARS
main:
addi $t1, $0, 10 #load immediate value (10)
addi $t2, $0, 11 #load immediate value (11)
add $t3, $t1, $t2 #add two numbers into $t3
jr $ra #return from main; return address
它组装时没有错误,但当我按下play时,它会给出这个错误
错误在:程序计数器值无效:
我有一个任务,我的目标是将以下Java代码(在asm文件顶部的注释块中)转换为mips汇编代码。当我尝试在QTSpim中编译时,我得到了错误提示“尝试在0x0040007c执行非指令”。另外,我一直收到一个错误,说我的主标签在36行被第二次使用了,但我看不出这是怎么可能的。任何帮助都会很感谢,谢谢。
下面是我的代码:
########################################################################
# program description:
#Translate this into assembly:
#
#int w1 = 4
我的代码抛出了一些错误,而且我对MIPS语法并不总是很熟悉。给定的问题是:
1202年研究的最初问题是兔子在理想环境下的繁殖速度。
假设一对新生的兔子,一只公的,一只母的,被放进田里。
兔子在一个月后就性成熟了,所以在第二个月的月底,雌性兔子可以生产出另一对兔子。
假设我们的兔子永远不会死,从第二个月开始,雌性总是每个月生产一对兔子(一只雄性,一只雌性)。
一年会有多少双呢?
到目前为止,我的代码是:
.data
str: .asciiz "The number of pairs of rabbits in a year are: "
.text
.globl main
所以,我目前正在为我的大学学位学习MIPS,我遇到了一个语法错误,我似乎找不到错误的地方,我的一段代码是一个用户输入两个数字的代码,控制台应该返回一组由于用户输入的两个数字而递增并完成打印的数字,我目前在PCSpim上收到一个语法错误,它说"spim:(解析器)语法错误在文件的第55行“55行是我要发送的代码的addi $t0, $t0, $t2,如果有人能给我指出解决这个问题的大致方向,那就太好了。
.data
text: .asciiz "Enter any number: "
message: .asciiz " After while loop is
如何在Mips64中打印数组?我已经用下面的代码成功地在QtSPIM (MIPS32)中打印出了数组:
.data
array: .word 10 20 30 40 50
.text
#load base address of array
la $t1,array
#load number of elements
ld $t2,num
loop:
#load word
lw $a0, ($t1)
#print element
li $v0,1
syscall
#print space
la $a0, space
li $v0,4
syscall
addi $t1,4
我在单周期MIPS处理器上做一个作业,我对附加指令有点困惑。
,作为我的参考,作者声明立即签名将被扩展
Description:
Adds a register and a sign-extended immediate value and stores the result
in a register
Operation:
$t = $s + imm; advance_pc (4);
Syntax:
addiu $t, $s, imm
Encoding:
0010 01ss ssst tttt iiii iiii iiii iiii
如果我有以下说明
lu
我真的在为mips而苦苦挣扎,我已经阅读了很多关于如何制作和访问数组的教程,但每当我尝试执行列出的方法时,我的程序什么也做不了。
目前我有这样的代码:
.data
array: .word 1:32 # array of 32 integers
line: .asciiz "\n"
main:
li $t0, 0 # $t0 is the loop induction variable
li $t1, 32 # $t1 is the sentinal value for the loop
la