diff options
Diffstat (limited to 'driver.s')
-rw-r--r-- | driver.s | 16 |
1 files changed, 7 insertions, 9 deletions
@@ -169,15 +169,14 @@ eval_arg_loop: addi $t3,$t3,4 eval_arg_strict: lw $t4,($t3) - lw $t4,($t4) - sltu $t4,$t4,$s7 - bne $t4,$0,eval_arg + lw $t5,($t4) + sltu $t5,$t5,$s7 # check if argument is already in hnf + bne $t5,$0,eval_arg addi $t1,$t1,-1 j eval_arg_loop addi $t3,$t3,4 eval_arg: - lw $t4,($t3) # reverse pointers - addi $s2,$s2,1 + addi $s2,$s2,1 # reverse pointers sw $s2,($t3) addi $s2,$s3,0 addi $s3,$t4,0 @@ -191,15 +190,14 @@ eval_rewind: la $t4,EVALROOT beq $s2,$t4,eval_rewind_root addi $t0,$s2,0 - addi $t1,$s2,0 + addi $t1,$s2,4 eval_rewind_loop: - addi $t1,$t1,4 lw $t2,($t1) andi $t3,$t2,1 beq $t3,$0,eval_rewind_loop - nop + addi $t1,$t1,4 xori $s2,$t2,1 - sw $s3,($t1) + sw $s3,-4($t1) addi $s3,$t0,0 j eval nop |