Вопрос по преобразованию сборки в 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 бит.

Другие вопросы по тегам