movzbl на строку в регистр - PullRequest
       85

movzbl на строку в регистр

0 голосов
/ 07 ноября 2018

Я пытаюсь прочитать сборочные линии и расшифровать, что они делают, и я получил это далеко:

% eax в настоящее время 70, и он будет перезаписан

% ebx - это введенная мной строка, состоящая из 70 "м" с. Его адрес 0x804d850 и продолжается до 0x804d896 как завершающий символ. Все промежуточные адреса имеют значение 109 для м.

Это строка, на которой я застрял:

0x0804927b <+39>:    movzbl  (%ebx), %eax
0x0804927e <+42>:    test    %al, %al

Из того, что я понимаю, я пытаюсь переместить байт из моей строки, чтобы перезаписать% eax, а затем увеличить его до нуля. Затем я сравниваю младший байт% eax («m», который просто movzbl'd) с нулем.

Как получается, что я могу получить% al равным 0? Разве это не соответствует символу NULL? Если я введу это в качестве моего 70-го символа для строки, строка будет содержать всего 69 символов, а с конца все равно будет 'm'.

Извините, если этот вопрос сформулирован в замешательстве.

...