я пытаюсь конвертировать C код в программу MIPS - PullRequest
0 голосов
/ 03 февраля 2020
int s3[] = {3,5,7,5,0};
int x = 5
int c = 0
while(s3[0] != 0){
if(s3[i] == x){
c += 1; 
s3 += 1;

}

я пытаюсь преобразовать этот C код в сборку программы mips

1 Ответ

0 голосов
/ 05 февраля 2020

Как указано в комментариях. Ваш код C недействителен. Но при условии, что вы хотите посчитать число 5 в вашем массиве, это сделает работу:

.data
s3: .word 3,5,7,5,0

.text
.globl main

main:
la $t3, s3      # load adress of s3 into $t3
li $t4, 5       # load x=5 in $t4
li $t5, 0       # load c=0 in $t5
li $t6, 0       # $t6 will be list index i starting with 0  

while:
add $t7, $t6, $t3   # get adress of s3[i]
lw $t8, 0($t7)      # load word from s3[i]
beq $t8, $t1, exit  # if s3[i] == 0 break

bne $t8, $t4, if    # if s3[i] != x jump to if:
addi $t5, $t5, 1    # increment counter
if:

addi $t6, $t6, 4    # increment list index
j while
exit:

Предполагая, что это ваш правильный C -Код:

int s3[] = {3,5,7,5,0};
int x = 5;
int c = 0;
int i = 0;
while(s3[i] != 0){

  if(s3[i] == x){
    c ++; 
  }

i++;
}
...