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

    movq %rax, %rdi     # Select address of array
    movq %r15, %rsi     # Select length of array
    movq $0, %rdx       # Sort by key 0
    call insertion_sort         # Sort the array
    
    # Print array
    movq %rax, %rdi     # Select the pointer to the array
    movq %r15, %rsi     # Select length of array
    call print_buffer   # Print array

    movq $60, %rax      # Select exit syscall
    movq $0, %rdi       # Exit code 0
    syscall