Skip to content

Commit b1c8645

Browse files
committed
Fix tribonacci
1 parent 9d98f9b commit b1c8645

2 files changed

Lines changed: 14 additions & 13 deletions

File tree

examples/tribonacci.asm

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,20 @@
66
# x5 = i (loop counter)
77
# x6 = temp
88

9-
addi x1, x0, 7 # n = 7 (target index)
10-
addi x2, x0, 1 # trib(2) = 1
11-
addi x3, x0, 0 # trib(1) = 0
12-
addi x4, x0, 0 # trib(0) = 0
13-
addi x5, x0, 3 # i = 3 (start at trib(3))
9+
addi x1, x0, 7 # n = 7 (target index)
10+
addi x1, x1, 1 # Adjust for 0-based index (trib(0) = 0, trib(1) = 0, trib(2) = 1)
11+
addi x2, x0, 1 # trib(2) = 1
12+
addi x3, x0, 0 # trib(1) = 0
13+
addi x4, x0, 0 # trib(0) = 0
14+
addi x5, x0, 3 # i = 3 (start at trib(3))
1415

1516
loop:
16-
add x6, x2, x3 # temp = trib(i-2) + trib(i-3)
17-
add x6, x6, x4 # temp = temp + trib(i-4)
18-
add x4, x3, x0 # trib(i-4) = trib(i-3)
19-
add x3, x2, x0 # trib(i-3) = trib(i-2)
20-
add x2, x6, x0 # trib(i-2) = temp (new value)
21-
addi x5, x5, 1 # i++
22-
blt x5, x1, loop # while i < n, repeat
17+
add x6, x2, x3 # temp = trib(i-2) + trib(i-3)
18+
add x6, x6, x4 # temp = temp + trib(i-4)
19+
add x4, x3, x0 # trib(i-4) = trib(i-3)
20+
add x3, x2, x0 # trib(i-3) = trib(i-2)
21+
add x2, x6, x0 # trib(i-2) = temp (new value)
22+
addi x5, x5, 1 # i++
23+
blt x5, x1, loop # while i < n, repeat
2324

2425
# Result: tribonacci(n) is in x2

tests/integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ var exampleTests = []exampleCase{
7272
{
7373
filename: "../examples/tribonacci.asm",
7474
expect: map[int]uint32{2: 13}, // tribonacci(7) = 13 in x2
75-
steps: 30,
75+
steps: 39,
7676
},
7777
}
7878

0 commit comments

Comments
 (0)