Ultima modifica:
Salve a tutti,
ho un esercizio da svolgere la cui consegna è la seguente (spoiler):
Il codice che ho scritto è il seguente
Vorrei chiedere qualche suggerimento in merito a questo codice per sapere cosa posso migliorare in chiarezza o in efficienza o in qualsiasi altro modo potete suggerire.
Un grazie a chi risponderà
ho un esercizio da svolgere la cui consegna è la seguente (spoiler):
Senza utilizzare le istruzioni di salto condizionato:
- Realizzare un contatore in assembly che incrementi il valore di un registro fino ad un valore predefinito e, una volta raggiunto quel valore, lo azzeri prima di ritornare ad incrementarlo.
- Aggiungere al punto precedente un secondo contatore che conti quante volte il primo sia stato azzerato
Il codice che ho scritto è il seguente
Codice:
.data
.text
.globl main
main: addi $t7, 4 # max = 4
addi $t8, 4 # costante 4
initialize:
la $t5, doNothing # carico indizizo base in t5
continue:
addi $t0, 1 # incremento
seq $t2, $t0, $t7 # t0 == t7 ? t2 = 1 : t2 = 0
# calcolo l indirizzo di salto
mul $t2, $t2, $t8
add $t4, $t2, $t5
jr $t4 # in base all'indirizzo calcolato esegue un salto all indirizzo corretto
doNothing:
jal continue # se sono arrivato qui allora devo continuare a incrementare
else:
addi $t9, 1 # incremento contatore degli azzeramenti
mul $t0, $t0, $zero # azzero il contatore e continuo ad iterare
j initialize
Un grazie a chi risponderà