aboutsummaryrefslogtreecommitdiff
path: root/src/main.s
blob: 196515fbdfec991d42ccacfd4aa24620cb1007db (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
.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
    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