Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .global mystrspn
- mystrspn:
- push %ebp
- mov %esp, %ebp
- push %esi
- push %edx
- mov 8(%ebp), %eax
- mov 12(%ebp), %esi
- movl $0, %ebx
- continue:
- movzb (%eax), %ecx
- movzb (%esi), %edx
- sub %edx, %ecx // вычли один символ из другого, если равны то круто идем дальше
- jz equal
- movzb (%eax), %ecx // если символы оказались не равны то пробуем пройтись дальше по второй строке
- inc %esi // увеличили указатель
- movzb (%esi), %edx
- test %edx, %edx //если еще не конец файла то назад в цикл сравнивать
- jnz continue
- jmp end
- equal:
- movzb (%eax), %ecx
- movzb (%esi), %edx
- inc %ebx // это счетчик, его увеличили
- inc %eax // продвинулись по первой строке
- movzb (%eax), %ecx
- cmp $0, %ecx // если там не пустой символ то дальше
- jz end // иначе конец
- mov 12(%ebp), %esi // так как открываем новый символ первой строки, то возвращаемся в начало второй
- movzb (%esi), %edx
- jmp continue // переходим назад к сравнениям
- end:
- mov %ebx, %eax
- pop %edx
- pop %esi
- movl %ebp, %esp
- popl %ebp
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement