blob: ba232fecc30084aecb01050a9d41bfd91fccbaa6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# --------------------------------------------
# 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, and an address of a sorting algorithm to be
# used
# INPUTS : rdi = address for A
# rsi = length of A in 64 bit chunks
# rdx = index of key to sort by
# rcx = address of sorting algorithm
# OUTPUTS : rax = address for sorted A
# CLOBBERS: none
# NOTES : Preserves all registers
# --------------------------------------------
.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 (* is indirect call)
# Restore registers
pop %r15
pop %r14
pop %r13
pop %r12
pop %rbp
pop %rbx
ret
|