aboutsummaryrefslogtreecommitdiff
path: root/examples/fibonacci.hdasm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/fibonacci.hdasm')
-rw-r--r--examples/fibonacci.hdasm62
1 files changed, 0 insertions, 62 deletions
diff --git a/examples/fibonacci.hdasm b/examples/fibonacci.hdasm
deleted file mode 100644
index 95a59c8..0000000
--- a/examples/fibonacci.hdasm
+++ /dev/null
@@ -1,62 +0,0 @@
-[entry: main]
-
-const SYS_WRITE = 1
-const SYS_EXIT = 60
-
-const STDOUT = 1
-
-data newline = "\n"
-
-proc print_number(value: rdi)
-{
- stack buffer[32]
-
- rax = value
- rbx = 10
- rsi = buffer+31
-
-convert:
- rdx = 0
- rax /= rbx
- rdx += '0'
-
- ^byte rsi = rdx
- rsi -= 1
-
- if rax != 0
- goto convert
- rsi += 1
-
- rax = SYS_WRITE
- rdi = STDOUT
- rdx = buffer+32-rsi
- syscall
-
- rax = SYS_WRITE
- rdi = STDOUT
- rsi = newline
- rdx = newline.len
- syscall
-}
-
-proc main
-{
- r12 = 0
- r13 = 1
- r15 = 10 // syscall clobbers rcx/r11, so keep the counter in r15
-
-loop:
- print_number(r12)
-
- rax = r12
- r12 = r13
- r13 += rax
-
- r15 -= 1
- if r15 != 0
- goto loop
-
- rax = SYS_EXIT
- rdi = 0
- syscall
-}