aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsrc/quicksort.s (renamed from src/qsort.s)30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/qsort.s b/src/quicksort.s
index 564a25e..78b9eea 100755
--- a/src/qsort.s
+++ b/src/quicksort.s
@@ -1,5 +1,23 @@
# --------------------------------------------
-# FUNCTION: qsort
+# FUNCTION: quicksort
+# PURPOSE : Calls the _quicksort function with the right parameters
+# INPUTS : rdi = address for A
+# rsi = number of coordinates n
+# rdx = index of key to sort by
+# OUTPUTS : rax = address for sorted A
+# NOTES : preserves rdi, rdx
+# --------------------------------------------
+.section .text
+.globl quicksort
+.type quicksort, @function
+quicksort:
+ leaq -1(%rsi), %rcx
+ xorq %rsi, %rsi
+ call _quicksort
+ ret
+
+# --------------------------------------------
+# FUNCTION: _quicksort
# PURPOSE : Sorts array A, with references to arrays A_i,
# based on the given key in A_i,
# address and size of A.
@@ -11,9 +29,9 @@
# NOTES : preserves rdi, rdx
# --------------------------------------------
.section .text
-.globl qsort
-.type qsort, @function
-qsort:
+# .globl _quicksort
+.type _quicksort, @function
+_quicksort:
pushq %r12
pushq %r13
pushq %r14
@@ -34,12 +52,12 @@ qsort:
# --- left recursion ---
movq %r12, %rsi # low
movq %r14, %rcx # high = p
- call qsort
+ call _quicksort
# --- right recursion ---
leaq 1(%r14), %rsi # low = p + 1
movq %r13, %rcx # high
- call qsort
+ call _quicksort
.qsort_exit:
movq %rdi, %rax