Implement streq routine

This commit is contained in:
Wesley Moore 2025-03-06 20:59:32 +10:00
parent 51ee97064b
commit 5f3cbbb8a4
No known key found for this signature in database

View file

@ -55,3 +55,30 @@ read:
li a0, 0 # 0 = standard input (stdin)
ecall # invoke syscall
ret
# Determine if two strings are equal
# arguments:
# a0: address of first string
# a1: length of first string
# a2: address of second string
# a3: length of second string
# return:
# a0: 1 if equal, 0 otherwise
streq:
bne a1, a2, 2f # If the lengths are not the same then the strings are different
1:
beqz a1, 3f # If the remaining length is zero, string are the same
lbu a4, 0(a0) # load byte from string 1
lbu a5, 0(a2) # load byte from string 2
bne a4, a5, 2f # return false if bytes are not equal
addi a1, a1, -1 # decrement a1
addi a0, a0, 1 # go to next byte of string 1
addi a2, a2, 1 # go to next byte of string 2
j 1b # loop
2:
li a0, 0 # 0 = false
ret
3:
li a0, 1 # 1 = true
ret