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
Я В настоящее время в этой ситуации есть проблема с запуском кода. Программа принята, но ничего не делает.