forked from MightyPork/crsn
parent
c8d01b6151
commit
af52270a29
@ -0,0 +1,44 @@ |
|||||||
|
( |
||||||
|
; using a coroutine as a generator |
||||||
|
|
||||||
|
(spawn r15 fibo) |
||||||
|
|
||||||
|
(ld r0 20) |
||||||
|
(:next) |
||||||
|
|
||||||
|
(ld r1 @r15) ; Read a yielded value |
||||||
|
(call printnum r1) |
||||||
|
(lds @cout ", ") |
||||||
|
|
||||||
|
(dec r0) |
||||||
|
(j.nz :next) |
||||||
|
(ld @cout '\n') |
||||||
|
(halt) |
||||||
|
|
||||||
|
(proc fibo |
||||||
|
(ld r0 0) |
||||||
|
(ld r1 1) |
||||||
|
(:x) |
||||||
|
(yield r1) |
||||||
|
(add r2 r0 r1) |
||||||
|
(ld r0 r1) |
||||||
|
(ld r1 r2) |
||||||
|
(j :x) |
||||||
|
) |
||||||
|
|
||||||
|
(proc printnum num |
||||||
|
(mkbf r15) |
||||||
|
(ld r1 num) |
||||||
|
(tst r1 (<0? (mul r1 -1))) |
||||||
|
(:next) |
||||||
|
(mod r0 r1 10) |
||||||
|
(add r0 '0') |
||||||
|
(bfrpush @r15 r0) |
||||||
|
(div r1 10 (z? |
||||||
|
(tst num (<0? (bfrpush @r15 '-'))) |
||||||
|
(lds @cout @r15) |
||||||
|
(del @r15) |
||||||
|
(ret))) |
||||||
|
(j :next) |
||||||
|
) |
||||||
|
) |
Loading…
Reference in new issue