; The OS/K Team licenses this file to you under the MIT license. ; See the LICENSE file in the project root for more information. ; ; int strcmp(const char *str1, const char *str2) ; ; Returns: ; 0 if the contents of both strings are equal ; >0 if the first character that does not match has a greater value in str1 than in str2 ; <0 if the first character that does not match has a lower value in str1 than in str2 ; strcmp: .l: movzx rax, b[ax0] movzx rdx, b[ax1] cmp rax, rdx jmp.nz .r ; both zero? add rbx, rax, rdx jmp.bxz .r add ax0, ax0, 1 add ax1, ax1, 1 jmp .l .r: sub rax, rax, rdx ret ; ; int strncmp(const char *str1, const char *str2, int maxn) ; strncmp: mov rcx, ax2 jmp.cxz .r .l: mov rax, b[ax0] mov rdx, b[ax1] cmp rax, rdx jmp.nz .r add ax0, ax0, 1 add ax1, ax1, 1 loop .l .r: sub rax, rax, rdx ret