# 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/. .globl zap_fndbyte zap_fndbyte: # rax: Address of the current element. # rdi: Address of the first element. # rsi: Address of the element after the last element. # rdx: Byte value. # rcx: Current byte. movq %rdi,%rax addq %rdi,%rsi # Iterate over the array: .loop: # Check if we have reached the end of the array: cmpq %rax,%rsi je .nfnd # Check if we have found the byte value: movb (%rax),%cl cmpb %cl,%dl je .fnd # Continue to the next byte: incq %rax jmp .loop # Found: .fnd: subq %rdi,%rax ret # Not found: .nfnd: movq $0xFFFFFFFFFFFFFFFF,%rax ret