.section .text .globl _start _start: # Open file movq 16(%rsp), %rdi # Select first argument as file name movq $0, %rsi # Select read only movq $0, %rdx # Unused mode for read only movq $2, %rax # Select open syscall syscall # Open file, file descriptor returned in rax # Convert to array movq %rax, %rdi # Select file descriptor call make_array_from_file # Convert file to array format movq %rdx, %r15 # Save length of array in r15 # Sort movq %rax, %rdi # Select address of array movq %r15, %rsi # Select length of array decq %rsi movq $1, %rdx # Sort by key 1 call qsort # Sort the array # Convert array to string # in tsv format movq %rax, %rdi # Select the pointer to the array movq %r15, %rsi # Select length of array call tub2tsv # Print array # print string to stdout movq %rax, %rsi movq $1, %rax movq $1, %rdi syscall # Exit movq $60, %rax movq $0, %rdi # Exit code 0 syscall