/* Copyright 2022 Gabriel Jensen. This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include .global rgo_streq rgo_streq: /* char const * lstr char const * rstr */ #if defined(__x86_64__) /* rax: Address of the current input character. */ movq %rdi,%rax /* rsi: Address of the current output character. */ movq %rsi,%rsi /* rdx: Current input character. */ /* rcx: Current output character. */ .loop: movb (%rax),%dl movb (%rsi),%cl cmpb %dl,%cl jne .neq testb %dl,%dl /* Check if we have reached the null-terminator. */ jz .eq incq %rax incq %rsi jmp .loop .eq: mov $0x1,%rax ret .neq: mov $0x0,%rax ret #endif