diff --git a/coursework/main.asm b/coursework/main.asm index b4f35cc..7caba04 100644 --- a/coursework/main.asm +++ b/coursework/main.asm @@ -75,10 +75,10 @@ openfile: mov rax, -24[rbp] mov esi, 0 mov rdi, rax - mov eax, 0 - call open + mov eax, 2 + syscall mov -4[rbp], eax - cmp -4[rbp], 0 + cmp DWORD -4[rbp], 0 jns .L8 mov rdi, 1 mov rsi, E_open_file @@ -98,27 +98,27 @@ fill_buffer: mov rbp, rsp sub rsp, 32 mov -20[rbp], edi - mov rdx, buffer_tail[rip] - lea rax, buffer[rip] + mov rdx, [buffer_tail] + lea rax, [buffer] sub rdx, rax mov eax, 1024 sub rax, rdx mov -8[rbp], rax mov rdx, -8[rbp] mov eax, -20[rbp] - lea rcx, buffer[rip] + lea rcx, [buffer] mov rsi, rcx mov edi, eax call read mov -16[rbp], rax cmp QWORD -16[rbp], 1023 ja .L11 - mov BYTE iseof[rip], 1 + mov BYTE [iseof], 1 .L11: - lea rdx, buffer[rip] + lea rdx, [buffer] mov rax, -16[rbp] add rax, rdx - mov buffer_tail[rip], rax + mov [buffer_tail], rax nop leave @@ -144,7 +144,7 @@ find_second_word: find_fullname_end: push rbp mov rbp, rsp - lea rax, buffer[rip] + lea rax, [buffer] mov -8[rbp], rax jmp .L17 .L20: @@ -159,11 +159,11 @@ find_fullname_end: test al, al jne .L19 .L18: - lea rax, buffer[rip+1024] + lea rax, [buffer+1024] cmp -8[rbp], rax jb .L20 .L19: - lea rax, buffer[rip+1024] + lea rax, [buffer+1024] cmp -8[rbp], rax jne .L21 mov eax, 0 @@ -183,7 +183,7 @@ pop_fullname: call find_fullname_end add rax, 1 mov -16[rbp], rax - lea rdx, buffer[rip] + lea rdx, [buffer] mov rax, -16[rbp] sub rax, rdx mov -24[rbp], rax @@ -194,7 +194,7 @@ pop_fullname: mov rax, -8[rbp] add rax, rdx movzx eax, BYTE [rax] - lea rcx, buffer[rip] + lea rcx, [buffer] mov rdx, -8[rbp] add rdx, rcx mov BYTE [rdx], al @@ -208,11 +208,11 @@ pop_fullname: sub rax, -24[rbp] cmp -8[rbp], rax jb .L25 - mov rax, buffer_tail[rip] + mov rax, [buffer_tail] mov rdx, -24[rbp] neg rdx add rax, rdx - mov buffer_tail[rip], rax + mov [buffer_tail], rax nop leave @@ -234,7 +234,7 @@ print_count: jmp .L27 .L28: mov rcx, -24[rbp] - movabs rdx, -3689348814741910323 + mov rdx, -3689348814741910323 mov rax, rcx mul rdx shr rdx, 3 @@ -248,7 +248,7 @@ print_count: add eax, 48 mov BYTE -1[rbp], al mov rax, -24[rbp] - movabs rdx, -3689348814741910323 + mov rdx, -3689348814741910323 mul rdx mov rax, rdx shr rax, 3 @@ -276,7 +276,7 @@ get_name: mov rbp, rsp sub rsp, 40 mov -40[rbp], rdi - lea rax, buffer[rip] + lea rax, [buffer] mov rdi, rax call find_second_word mov -24[rbp], rax @@ -318,7 +318,7 @@ get_name: leave ret -main: +_start: push rbp mov rbp, rsp sub rsp, 96 @@ -331,7 +331,7 @@ main: call openfile mov -12[rbp], eax mov edx, 64 - lea rax, name[rip] + lea rax, [name] mov rsi, rax mov edi, 0 call read @@ -357,7 +357,7 @@ main: mov rdi, rax call get_name lea rax, -80[rbp] - lea rdx, name[rip] + lea rdx, [name] mov rsi, rdx mov rdi, rax call namecmp @@ -367,8 +367,8 @@ main: .L38: mov eax, 0 call pop_fullname - mov rdx, buffer_tail[rip] - lea rax, buffer[rip] + mov rdx, [buffer_tail] + lea rax, [buffer] cmp rdx, rax jne .L39 mov rax, -8[rbp]