# Error function # # Print error messages and exit program. .include "linux.s" .equ ST_ERROR_CODE, 16 .equ ST_ERROR_MSG, 24 .globl error_exit .type error_exit, @function error_exit: pushq %rbp movq %rsp, %rbp # Write error Code movq ST_ERROR_CODE(%rbp), %rcx pushq %rcx call count_chars popq %rcx movq %rax, %rdx movq %rcx, %rsi movq $STDERR, %rdi movq $SYS_WRITE, %rax syscall # Write error message movq ST_ERROR_MSG(%rbp), %rcx pushq %rcx call count_chars popq %rcx movq %rax, %rdx # How many bytes to write movq %rcx, %rsi # Buffer to write from movq $STDERR, %rdi # FD to write to movq $SYS_WRITE, %rax # self explanatory syscall pushq $STDERR call write_newline # Exit program movq $SYS_EXIT, %rax movq $1, %rdi syscall