Мне не удалось найти документацию на выходе objdump. В objdump выход -D, я вижу ниже ASM, но я не понимаю: LEA 0x0 (% еси, 1),% есиAT & T x86 Assembly "lea 0x0 (% esi, 1),% esi"
Из https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax я могу видеть, что есть 4 параметра в «указатель»: сегмент: смещение (базовый регистр, регистр смещения, скалярный множитель)
Но что означает этот 0x0 (% esi, 1)? скаляр опущен как 0? Е-майл может быть решена, чтобы помочь мне настроить руководство по эксплуатации AT & T asm?
Спасибо, Стивен
Ну, число вне скобки может быть только смещением. Внутри круглой скобки единственное, что может быть числом, - это масштаб. Итак ... :) Это просто objdump, педантичный. –
Когда вы используете скалярное значение 1 (и смещение 0) с одним регистром, предполагается, что указанный регистр является базой. В действительности 'lea 0x0 (% esi, 1),% esi' - это то же самое, что и' lea (% esi),% esi'. Вы также можете получить 'objdump' для вывода инструкций с синтаксисом Intel, который может быть вам более знаком. Вы можете сделать это, добавив опцию '-Mintel' –
Это 3-байтовый NOP, IIRC. – ninjalj