Я пытаюсь перепроектировать двоичный код, и следующая инструкция меня сбивает с толку, может ли кто-нибудь выяснить, что именно это делает?
=>0x804854e: repnz scas al,BYTE PTR es:[edi]
0x8048550: not ecx
Где:
EAX: 0x0
ECX: 0xffffffff
EDI: 0xbffff3dc ("aaaaaa\n")
ZF: 1
Я вижу, что это как-то уменьшает ECX на 1 каждую итерацию и что EDI увеличивается по длине строки. Я знаю, что он вычисляет длину строки, но насколько точно это происходит, и почему "al" участвует, я не совсем уверен.