我从以下代码中找到了以下代码:
我正试图把它从MIPS语言转换成PLP (我知道它们都是汇编语言),la指令就是让我失望的东西。用于锁相环工具的MIPS la的等效值是什么?
守则是:
main:
la $t0, Array # Copy the base address of your array into $t1
add $t0, $t0, 40 # 4 bytes per int * 10 ints = 40 bytes
outterLoop: # Used to determine when we are done iter
所以,我有一个数组,它以前是用1或0填充的,每当我试图编译这个代码时,MIPS会给我一个语法错误,有人能解释一下这个语法错误是什么吗?我很难理解为什么不能这样访问数组,当然,$t1是索引的计数器,它会增加到100
slti $t7, prim_flag($t1), 1 # checks if prim_flag ($t1) < 1 stores 1 if so stores 0 if not
beq $t7, 0, print_numbers # checks if the value in $t7 is 0, if so jump to end_game
以及数组:
使用MIPS,我试图了解堆栈是如何工作的。我基本上把它写下来了,除了一件事。假设我们有一个宏来将值推到堆栈上,如下所示:
.macro PUSHI_ %0
li $t0, %0 #loads the value into register $t0
addi $sp, $sp, -4 #increments the stack pointer
sw $t0, ($sp) #Here is where I need help
例如,我尝试将一段C代码转换为MIPS,但对于变量计数,我不知道是使用addi $t0,0还是使用li $t0,0。我可以要么用要么用?那有什么区别呢?
Void haarPredict (int vector[], int N)
{
int half = N >> 1;
int count = 0;
for(int i = 0; i < half; i++)
{
int predictVal = vector[i];
int j =
我正在学习如何做MIPS,但我对乘法感到困惑。假设我正在将下面的C代码转换为MIPS。
c = b + a*3
其中a、b、C分别存储在寄存器$s1、$s2、$s3中。我应该如何在MIPS中写一个*3?是否有用于乘法的addi类型指令,或者我是否将3存储在临时寄存器中并像这样使用mult运算符?
addi $t0, $zero, 3
mult $s1,$t0
如果是这样的话,我如何获得这个操作的最终值或乘积来完成我的C代码?