我正在尝试在程序集中重新实现strcmp。
.Lstrcmp:
//check end of strings
cmpb $0, (%rdi, %R12, 1)
je .Lstrcmpend
cmpb $0, (%rsi, %R12, 1)
je .Lstrcmpend
//compare characters
mov (%rdi, %R12, 1), %R14
mov (%rsi, %R12, 1), %R15
cmp %R14, %R15
jne .Lstrcmpend
//go to next character
inc %R12
jmp .Lstrcmp
.Lstrcmpend:
mov %R12, %rax
ret
但是我无法比较每个角色。 %R12设置为零。
目前这只是一个草案。
strcmp(" test"," test")返回4,表示前4个字符全部相等。 WORKS
strcmp(" test"," test2")返回0,表示每个字符串的第一个字符不同。我不知道为什么。 FAIL
有人知道我做错了什么吗?我是否以正确的方式比较每个角色?
感谢您的帮助