Si scriva un programma in assembler MIPS che calcoli, attraverso una doppia chiamata ricorsiva, la funzione f(n) cosė definita: f(n) = f(n-1) + f(n-2), se n>1 1, se n=1 0, se n=0 #versione con meno istruzioni ma maggiore occupazione di stack .data stringa_i: .asciiz "\n scrivi un intero (0 per uscire): " stringa_o: .asciiz "\n il valore di fibonacci č: " .text .globl main main: li $v0, 4 la $a0, stringa_i syscall #stampa richiesta di un intero li $v0, 5 syscall #intero richiesto in $v0 move $a0,$v0 beq $a0,0 fine jal F move $t0,$v0 #salvo momentaneamente il risultato in $t0 la $a0, stringa_o li $v0,4 syscall move $a0,$t0 li $v0,1 syscall j main fine: li $v0, 10 syscall F: ble $a0,1 casobase sub $sp, $sp, 12 sw $ra, 0($sp) sw $a0, 4($sp) sub $a0, $a0,1 jal F lw $a0, 4($sp) sw $v0, 8($sp) sub $a0,$a0,2 jal F move $t0, $v0 lw $v0, 8($sp) lw $a0, 4($sp) lw $ra, 0($sp) add $sp, $sp, 12 add $v0, $v0, $t0 jr $ra casobase: beq $a0,1, uno beq $a0,$0, zero uno: li $v0, 1 jr $ra zero: li $v0, 0 jr $ra