aboutsummaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2024-07-14 10:52:51 -0700
committerChristian Cunningham <cc@localhost>2024-07-14 10:52:51 -0700
commit5b0f04f0c5d406def1acbcdbcc114e9b4bf5c7da (patch)
treee75b1ef3878d279ce50baaaaa43a993e05d90474 /main.asm
parentf4c8ec9028f19fe334ecd4ae49521011fcdba012 (diff)
Double Linked List
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm43
1 files changed, 43 insertions, 0 deletions
diff --git a/main.asm b/main.asm
index 66f73f6..77d214b 100644
--- a/main.asm
+++ b/main.asm
@@ -110,6 +110,49 @@ _main:
pop rax
lln_free
+ dll_alloc
+ push rax
+ mov rbx, rax
+ mov r12, 0xDEADBEEF
+ dll_push rbx, r12
+ push rax
+ mov rbx, [rsp+8]
+ mov r12, 0xCAFEBABE
+ dll_push rbx, r12
+ push rax
+
+ mov rbx, [rsp+16]
+
+ mov rax, rbx
+ mov rax, [rax + dll_value]
+ REGD rax
+
+ mov rax, rbx
+ dll_seek
+ mov rax, [rax + dll_value]
+ REGD rax
+
+ mov rax, rbx
+ dll_seek
+ dll_seek
+ mov rax, [rax + dll_value]
+ REGD rax
+
+ mov rax, rbx
+ dll_end
+ mov rax, [rax + dll_value]
+ REGD rax
+
+ pop rax
+ pop rax
+ pop rax
+ dll_end
+.free_loop:
+ mov rbx, [rax + dll_prev]
+ dll_free
+ mov rax, rbx
+ cmp rbx, 0
+ jne .free_loop
exit_prog