# 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_streq zap_streq: # rdi: Address of the current left character. # rsi: Address of the current right character. # rax: Current left character. # rdx: Current right character. # Iterate over the strings: .loop: # Copy the characters into registers: movb (%rdi),%al movb (%rsi),%dl # Check if the characters are equal: cmpb %al,%dl jne .neq # If not, the strings also aren't equal. # Check if we have reached the null-terminator: testb %al,%al jz .eq # If so, all previous characters have compared equal, and the strings are equal. # Continue to the next characters: incq %rdi incq %rsi jmp .loop # The strings have compared equal: .eq: movb $0xFF,%al ret /* The strings have compared unequal: */ .neq: movb $0x0,%al ret