Вопрос по преобразованию сборки в c - что конкретно делает инструкция movzbl?
Я пытаюсь понять, что это в сборке будет означать в C:
movq 16(%rdi), %rdx
movq 16(%rsi), %rax
movzbl (%rdx), %edx
Я в основном не понимаю, что будет делать movzbl (%rdx), %edx. Благодаря!
1 ответ
Это синтаксис AT&T для movzx
инструкция. Он извлекает один байт из адреса, содержащегося в
%rdx
, ноль расширяет его до 32 бит и сохраняет результат в
%edx
.
Как и в случае с каждой командой x86-64, которая записывает в 32-битный регистр, старшая половина соответствующего 64-битного регистра
%rdx
также обнуляется. Так что вы можете думать об этой инструкции как о расширении нулями 8-битного значения до 64 бит.