Я переучиваю ассемблер, который я использовал на очень старых машинах MS-DOS!!!
Это мое понимание того, как должна выглядеть эта функция. Он компилируется, но сбой SIGSEGV при попытке установить 0xffffffff в ecx.
Код запускается в виртуальной машине с 32-разрядным Debian 9. Любая помощь будет оценена.
    int getStringLength(const char *pStr){
        int len = 0;
        char *Ptr = pStr;
        __asm__  (
            "movl %1, %%edi\n\t"
            "xor %%al, %%al\n\t"
            "movl 0xffffffff, %%ecx\n\t"
            "repne scasb\n\t"
            "subl %%ecx,%%eax\n\t"
            "movl %%eax,%0"
            :"=r" (len)     /*Output*/
            :"r"(len)       /*Input*/
            :"%eax"         /*Clobbered register*/
    );
        return len;
    }
