diff options
Diffstat (limited to 'examples/fibo.asm')
| -rw-r--r-- | examples/fibo.asm | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/examples/fibo.asm b/examples/fibo.asm index a1a3e82..7aa0cb9 100644 --- a/examples/fibo.asm +++ b/examples/fibo.asm @@ -1,13 +1,20 @@ - imm 40 + ;; fibo(30) + imm 30 fibo rel call + ;; pop arguments and push return value to stack pop rv + ;; call print_number (syscall number is 1) imm 1 syscall exit fibo: + ;; setup stack pointer and base pointer bp sp sbp + ;; get first argument imm 2 bpick + ;; if (x > 2) then imm 2 gt .else rel jz + ;; return fibo(x - 2) + fibo(x - 1) imm 2 bpick imm 1 sub fibo rel call @@ -19,6 +26,7 @@ fibo: srv .end rel jmp .else: + ;; else return 1 imm 1 srv .end rel jmp .end: |
