程序集无法比较两个字符串x86 linux

时间:2016-02-02 11:24:18

标签: string assembly compare character strcmp

我正在尝试在程序集中重新实现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

有人知道我做错了什么吗?我是否以正确的方式比较每个角色?

感谢您的帮助

0 个答案:

没有答案