アセンブリでstrlenを独自に実装しましたが、正しい値が返されません。文字列の長さ+4を返します。その結果。理由がわかりません..そして、皆さんのいずれかがそうすることを願っています...
アセンブリソース:
section .text
[GLOBAL stringlen:] ; C function
stringlen:
push ebp
mov ebp, esp ; setup the stack frame
mov ecx, [ebp+8]
xor eax, eax ; loop counter
startLoop:
xor edx, edx
mov edx, [ecx+eax]
inc eax
cmp edx, 0x0 ; null byte
jne startLoop
end:
pop ebp
ret
そしてメインルーチン:
#include <stdio.h>
extern int stringlen(char *);
int main(void)
{
printf("%d", stringlen("h"));
return 0;
}
ありがとう