aboutsummaryrefslogtreecommitdiff
path: root/snippets/allocate.s
diff options
context:
space:
mode:
Diffstat (limited to 'snippets/allocate.s')
-rw-r--r--snippets/allocate.s20
1 files changed, 0 insertions, 20 deletions
diff --git a/snippets/allocate.s b/snippets/allocate.s
deleted file mode 100644
index ef80957..0000000
--- a/snippets/allocate.s
+++ /dev/null
@@ -1,20 +0,0 @@
-# void *allocate(int n)
-#
-# A naive memory allocator that simply retrieves some new space from the OS.
-# It is not possible to deallocate the memory again.
-.globl allocate
-.type allocate, @function
-allocate:
- push %rdi
- # 1. Find the current end of the data segment.
- movq $12, %rax # brk
- xorq %rdi, %rdi # 0 means we retrieve the current end.
- syscall
- # 2. Add the amount of memory we want to allocate.
- pop %rdi # the argument
- push %rax # current end, which is where the allocated memory will start
- addq %rax, %rdi # compute the new end
- movq $12, %rax # brk
- syscall
- pop %rax # the old end, which is the address of our allocated memory
- ret