Сборка MIPS: преобразование вложенного цикла for в MIPS - PullRequest
0 голосов
/ 13 ноября 2018
my_data = [4, 8, 15, 16, 23, 42]

index = 0

for item in my_data:
    k = 0

for i in range(2, item+1):
    if (i % 2 == 0):
    k += 1
my_data[index] = k
index += 1
print my_data

Приведенный выше код берет список чисел и делит их на 2, и я пытаюсь преобразовать его в MIPS, однако я не совсем понял его. Если бы кто-нибудь мог уточнить это для меня, я был бы признателен.

 .data
my_data: .word 4, 8, 15, 16, 23, 42
.text

la $s0, my_data    # data of the list

addi $s1, $zero, 6
# $s1 is set to the size of the list 
add $t0, $zero, $zero 
#index=0
add $t4, $zero, $zero 
#for the items

    loop1:
    beq $t4, $s1,Exit

    add $t5, $t0, $t0
    add $t5, $t5, $t5
    add $t5, $s0, $t5
    addi $t6, $zero, 2

#k=0    
    add $t1, $zero, $zero 
    lw $t6, 0($t5)
    Exit:
    j loop1

    loop2:

    addi $t2, $zero, 2
    addi $t3, $t6, 1
    sub $t3, $t3, $t2

    j loop2

        beq $t2, $t3, Exit
#if
        rem $t7, $t2, $t6
        beq $t2, $zero, TRUE
        TRUE: addi $t1, $t1, 1
#if

        addi $t2, $t2, 1

        j loop2

    syscall

#inner loop
    sw $t1, 0($t5)
    addi $t0, $t0, 1
    addi $t4, $t4, 1

    j loop1

Я В настоящее время в этой ситуации есть проблема с запуском кода. Программа принята, но ничего не делает.

...