diff options
| -rw-r--r-- | src/sorting.s | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/sorting.s b/src/sorting.s new file mode 100644 index 0000000..c626b06 --- /dev/null +++ b/src/sorting.s @@ -0,0 +1,38 @@ +# -------------------------------------------- +# FUNCTION: sorter +# PURPOSE : Sorts array a, with references to arrays a_i, based on the given +# key in a_i, address and size of a. +# INPUTS : rdi = address for a +# rsi = length of a in bytes +# rdx = index of key to sort by +# rcx = address of sorting algorithm +# OUTPUTS : rax = address of sorted a +# CLOBBERS: none +# NOTES : Preserves all registers except eax +# -------------------------------------------- +.section .text +.globl sorter +.type sorter, @function +sorter: + # Save registers + push %rbx + push %rbp + push %r12 + push %r13 + push %r14 + push %r15 + + # rdi is the addres of a + # rsi is the length of a + # rdx is the index of the key + call rcx # Sort the array + + # Restore registers + pop %r15 + pop %r14 + pop %r13 + pop %r12 + pop %rbp + pop %rbx + + ret |