diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-10 17:30:25 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-10 17:30:25 +0300 |
| commit | 56fd37c60eb0d58ed4762340ddc85b74347bcd71 (patch) | |
| tree | d4d6362cb591ddb9658536d831f8c4433089189f /src/test_fibo.atk16 | |
| parent | 16b4fbd209d71bdb1a066bacd03a9ccd1cf3d16c (diff) | |
Do stuff
Diffstat (limited to 'src/test_fibo.atk16')
| -rw-r--r-- | src/test_fibo.atk16 | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/test_fibo.atk16 b/src/test_fibo.atk16 index 7f1abb9..a03f14b 100644 --- a/src/test_fibo.atk16 +++ b/src/test_fibo.atk16 @@ -1,9 +1,12 @@ @opt stack_pointer RG +@opt csr_scratch RF + +@use ext_std:* @label program ; call fibo subroutine with parameter 10 ldi RA 10 - csr fibo + csi fibo hlt @label fibo @@ -13,24 +16,21 @@ ; return value: ; RA fibo(n) : u16 - spu RB ; prelude + spu RB ; prelude spu RC - ldi RC 2 ; if n < 2, return n - sub RA RC RA + subi RA 2 RA ; if n < 2, return n bri f_sign fibo_early spu RD ; prelude - spu RE - ldi RE 1 ; constant 1 ldi RB 0 ; a = 0 ldi RC 1 ; b = 1 @label fibo_loop add RB RC RD ; v = a + b mov RC RB ; a = b mov RD RC ; b = v - sub RA RE RA ; n -= 1 + dec RA ; n -= 1 bri f_zero fibo_done ; loop while n > 0 jpi fibo_loop @@ -39,9 +39,8 @@ spo RB rsr @label fibo_done - ldr RD RA - spo RE - spo RD + mov RD RA + spo RD ; restore registers spo RC spo RB rsr |
