int strlengh(char *str)
int strlengh(char *str)
{
int lengh;
asm volatile(
" xorl %%edi, %%edi\n"
" abc: \n"
" lodsb\n" // # читает байт в строке в регистр al и автоматически устанавливает следующую позицию
" cmpb $0, %%al \n" // # если байт равен 0, значит end of string
" jz continue \n"
" incl %%edi \n" // # счетчик
" jmp abc \n" // # повторить...
" continue: \n"
" movl %%edi, %[res]\n"
: [res]" =d" (lengh)
: [str]" S" (str)
);
cout< < lengh;
return lengh;
}
|