Хелпикс

Главная

Контакты

Случайная статья





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;

}



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.