(func $fibonacci_nth (param $n i32) (result i32) ;;Declare some local registers (local $i i32) (local $a i32) (local $b i32) ;;Handle first 2 numbers as special cases (if (i32.eq (get_local $n) (i32.const 0)) (return (i32.const 0)) ) (if (i32.eq (get_local $n) (i32.const 1)) (return (i32.const 1)) ) ;;Initialize first two values (set_local $i (i32.const 1)) (set_local $a (i32.const 0)) (set_local $b (i32.const 1)) (block (loop ;;Add two previous numbers and store the result local.get $a local.get $b i32.add (set_local $a (get_local $b)) set_local $b ;;Increment counter i by one (set_local $i (i32.add (get_local $i) (i32.const 1) ) ) ;;Check if loop is done (br_if 1 (i32.ge_u (get_local $i) (get_local $n))) (br 0) ) ) ;;The result is stored in b, so push that to the stack get_local $b )